Jump to content
×
×
  • Create New...
  • 0

[SOURCE][DB] Suppression Personnage


ASIKOO

Question

  • Administrateur

Bien le bonjour,

 

Compilation OK, Game OK, DB OK, cependant un bug sur les FILES FE 2016 que j'avais remarqué : la suppression de personnage ne se fait pas ! La faute à une requête SQL ! J'ai corrigé l'erreur de syntax du début (un espace en trop)

 

Puis maintenant c'est une autre requête qui viens m'enquiquiner, toujours dans le cadre de la suppression d'un personnage via le client.

 

J'ai donc éditer "ClientManagerPlayer.cpp" des sources DB.

 

"SYSERR: Jan 29 15:23:03 :: ChildLoop: AsyncSQL: query failed: Column 'pid679592668' in 'where clause' (query: SELECT p.id, p.level, p.name FROM player_index AS i, player AS p WHERE pid679592668=679592668 errno: 1054)"

 

SQL : SELECT p.id, p.level, p.name FROM player_index AS i, player AS p WHERE pid%d=%d

 

SI JE FAIS : SELECT p.id, p.level, p.name FROM player_index AS i, player AS p WHERE pid%d=%d AND pid%d=%d

 

ça me donne :

 

SYSERR: Jan 29 15:28:33 :: ChildLoop: AsyncSQL: query failed: Unknown column 'pid679592668' in 'where clause' (query: SELECT p.id, p.account_id, p.level, p.name FROM player_index, player AS p WHERE pid679592668=679592668 AND pid2=6 errno: 1054)

 

J'ai du mal à comprendre le pourquoi du comment :o Pourquoi pid679592668 alors que la même chose après le AND donne pid2=6 qui correspond bien à ce que je souhaite !

 

Merci à vous les pro's des sources :D

Link to comment
  • Answers 9
  • Created
  • Last Reply

Top Posters For This Question

9 answers to this question

Recommended Posts

  • 0

Salut,

 

Il faut que tu double ta table player et que tu la rename en player_deleted, pour que les tables aient la même structure. Ensuite, quel parti as tu modifié dans le ClientManagerPlayer?

Link to comment
  • 0
  • Administrateur

Duplication player OK...

Renommage player_deleted OK...

------------

La première partie que j'avais modifié était celle-ci : LIGNE ~1051 : INSERT INTO player%s_deleted SELECT * FROM player%s WHERE id=%d

que j'ai modifié en : INSERT INTO player_deleted%s SELECT * FROM player%s WHERE id=%d

 

Après ça plus d'erreur, mais une autre requête posait soucis : LIGNE ~1002 : SELECT p.id, p.level, p.name FROM player_index%s AS i, player%s AS p WHERE pid%u=%u AND pid%u=p.id

 

que j'ai re-re-re-re-modifié en : "SELECT p.id, p.level, p.name FROM player_index%s AS i, player%s AS p WHERE pid%u=%u AND pid%d=%d"

 

(Modification de la fin de la requête) et là AUCUNE ERREUR dans le syserr DB mais SYSLOG indique :

 

Jan 29 16:24:00 :: PLAYER_DELETE TRY: asikoo 8 pid3

Jan 29 16:24:00 :: PLAYER_DELETE FAIL NO ROW

Link to comment
  • 0
  • Administrateur

Ok je vais remettre par defaut alors et re-testé je me suis peux être pris la tête pour pas grand chose...

 

EDIT : on est d'accord qu'après avoir dupliqué on vide la table player_deleted ? xD

Link to comment
  • 0
  • Administrateur

Ayaaaaaaaah réussi ça venait bien du db:

 

J'ai édité : ClientManagerPlayer.cpp

Ligne 1051

 

Chercher : INSERT INTO player%s_deleted SELECT * FROM player%s WHERE id=%d

Remplacer : INSERT INTO player_deleted%s SELECT * FROM player%s WHERE id=%d

 

DB effectuant une erreur de syntax. player _deleted au lieu de player_deleted et ça FONCTIONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNE !

Link to comment
Guest
This topic is now closed to further replies.


Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.