Limite de taille dans un WHERE
Posté : 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 ...
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 : Tout sélectionner
`id_entree` bigint(20) unsigned NOT NULL default '0'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 : Tout sélectionner
SELECT * FROM entree LIMIT 0, 50000Or, après ce traitement, j'ai un DELETE unitaire de cette forme
Code : Tout sélectionner
DELETE FROM entree WHERE id_entree = '....'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 ...