Les problèmes rencontrés avec int(11) le type de données dans MYSQL
J'ai une table MYSQL avec une clé primaire id int(11) (auto-incrémenté). Maintenant, j'ai un programme qui lit un fichier texte et entre la valeur dans la colonne id.
Donc ma table contient :
id
897413
791783
Mais ce qui se passe, c'est que, je ne peux pas trouver de grands nombres dans ma table. Est-ce à cause de la valeur maximale que int(11) peut tenir? Augmenté int(11) int(20) toujours face au même problème. Je ne peux pas changer le type de données à big int comme je l'ai déjà mis en place beaucoup de code.
EDIT:
J'ai essayé d'insérer un enregistrement unique avec l'id comme 523826 et il s'est enregistré en tant que base de 450258. Pourquoi donc?
int
etbigint
sont traitées de la même manière SQL sage. Si vous utilisez un langage fortement typé, vous devrez changer votre type de données pour les variables, mais en PHP, vous devez juste être capable de changer le type de données sans effets indésirables sur votre code.- Quel est le maxmimum valeur de type int(11) peut tenir?
- Qu'entendez-vous par "grands nombres"? Plus grand que 2147483647 (max pour la signature de
int
)? - voir mon dernier edit
Vous devez vous connecter pour publier un commentaire.
Définition de manuel mysql pour la
int
type de données:La
int
est toujours de type 4 octets (32 bits). Le11
dansint(11)
est juste la "largeur", que seules les questions pourUNSIGNED ZEROFILL
colonnes. Plus de détails sur ce blog.INSERT
requête?INT dans MySQL est de 32 bits. INT(11) signifie probablement que vous avez signé un INT, qui, pour un ID est inutile. Un unsigned INT automatiquement le double du nombre de Id disponible (puisque personne n'utilise un ID négatives). Même si 11 "semble" plus grand, c'est parce qu'il prend en considération la "longueur" du numéro si c'est le maximum de nombre négatif (-2147483648), qui est de 11 caractères.
BIGINT vous laisse aller jusqu'à 64 bits, signé ou non signé. Encore une fois, non signé permettra de vous deux fois autant d'Id (>0).
D'Andrew, mentionné ci-dessus, si votre PHP ne supporte pas les entiers 64 bits, alors vous ne serez pas en mesure d'utiliser facilement.
Espère que ça aide.