par
zeus » 08 janv. 2007, 17:41
Bonjour à tous,
Au cours de mon travail, je suis tombé sur un bug que je juge bizarre.
J'ai une table 'entree' qui contient, comme clé primaire, un champ 'id_entree' définie comme telle :
(Je met toujours un default ... même si c'est inutile

)
Dans cette colonne, à chaque insertion, je génère un identifiant aléatoire qui peut varier entre 17 et 20 digits.
Le traitement que j'applique dessus commence par un
qui fonctionne parfaitement, qui me remonte toutes les valeurs, y compris l'id_entree.
Or, après ce traitement, j'ai un DELETE unitaire de cette forme
Et, ici, je me suis rendu compte que si j'encadre mon id par des ', tous id > 19 digits commençant par '64...' n'est pas supprimé. Je n'arrive pas à le sélectionner non plus
Dès que j'enlève les ', plus de soucis, SELECT et DELETE fonctionnent parfaitement
Je me demandais donc si quelqu'un pouvait m'expliquer pourquoi
PS : pour le bug, pas de soucis, j'ai réduit la génération aléatoire entre 15 et 18 digit, ce qui est encore quelques centaines de fois supérieure à ce qui peut se trouver simultanément dans la table ...
Bonjour à tous,
Au cours de mon travail, je suis tombé sur un bug que je juge bizarre.
J'ai une table 'entree' qui contient, comme clé primaire, un champ 'id_entree' définie comme telle :
[code]`id_entree` bigint(20) unsigned NOT NULL default '0'[/code]
(Je met toujours un default ... même si c'est inutile ;) )
Dans cette colonne, à chaque insertion, je génère un identifiant aléatoire qui peut varier entre 17 et 20 digits.
Le traitement que j'applique dessus commence par un [code]SELECT * FROM entree LIMIT 0, 50000[/code] qui fonctionne parfaitement, qui me remonte toutes les valeurs, y compris l'id_entree.
Or, après ce traitement, j'ai un DELETE unitaire de cette forme
[code]DELETE FROM entree WHERE id_entree = '....'[/code]
Et, ici, je me suis rendu compte que si j'encadre mon id par des ', tous id > 19 digits commençant par '64...' n'est pas supprimé. Je n'arrive pas à le sélectionner non plus :-k
Dès que j'enlève les ', plus de soucis, SELECT et DELETE fonctionnent parfaitement :shock:
Je me demandais donc si quelqu'un pouvait m'expliquer pourquoi :?:
PS : pour le bug, pas de soucis, j'ai réduit la génération aléatoire entre 15 et 18 digit, ce qui est encore quelques centaines de fois supérieure à ce qui peut se trouver simultanément dans la table ...