Erreur MySQL 1264: en dehors de la plage de la valeur de la colonne
Comme je l'ai SET
cust_fax dans une table dans MySQL comme ceci:
cust_fax integer(10) NOT NULL,
puis-je insérer la valeur comme ceci:
INSERT INTO database values ('3172978990');
mais puis dire
d'erreur "1264" hors de valeur pour la colonne
Et je veux savoir où est l'erreur? Mon jeu? Ou autres?
Toute réponse sera apprécié!
- vous pouvez le vérifier ce problème stackoverflow.com/questions/6621530/1264-out-of-range-value-fix pour résoudre votre problème.
- C'est une bonne pratique pour spécifier des chiffres et des nombres et des chaînes des chaînes de caractères.
'3172978990'
est une chaîne de caractères,3172978990
est un nombre. Btw. le10
dansint(10)
n' pas permet de définir un type de données quelconque contrainte. C'est seulement un client d'affichage de l'indice. - double possible de Comment puis-je corriger les "en Dehors de la plage de la valeur ajustée pour la colonne' erreur?
Vous devez vous connecter pour publier un commentaire.
La valeur 3172978990 est supérieure à 2147483647 – la valeur maximale pour
INT
– d'où l'erreur. MySQL types d'entiers et de leurs aires de répartition sont énumérées ici.Également de noter que la
(10)
dansINT(10)
ne définit pas la "taille" d'un entier. Il spécifie le largeur d'affichage de la colonne. Cette information est uniquement consultatif.Pour corriger l'erreur, de changer de type de données pour
VARCHAR
. Numéros de téléphone et Fax doivent être stockés sous forme de chaînes. Voir cette discussion.AUTO_INCREMENT
somewhy de devenir un grand nombre dans un tableau avec un petit nombre de lignes. J'ai donc besoin d'ALTER TABLE table_name AUTO_INCREMENT=103;
(si il y a 102 lignes pour le moment).Vous pouvez également modifier le type de données bigInt et il permettra de résoudre votre problème, ce n'est pas une bonne pratique de garder les entiers comme des chaînes de caractères, sauf si nécessaire. 🙂
Vous dépassez la durée de int type de données. Vous pouvez utiliser UNSIGNED attribut à l'appui de cette valeur.
SIGNÉ INT peut soutenir jusqu'à 2147483647 et avec UNSIGNED INT permet le double de cette. Après cela, vous voulez continuer à enregistrer des données que d'utiliser CHAR ou VARCHAR avec une longueur de 10
tl;dr
Assurez-vous que votre
AUTO_INCREMENT
n'est pas hors de portée. Dans ce cas, de définir une nouvelle valeur pour avec:Explication
AUTO_INCREMENT
peut contenir un nombre qui est plus grand que la valeur maximale autorisée par le type de données. Cela peut se produire si vous avez rempli un tableau que vous avez vidé par la suite, mais leAUTO_INCREMENT
restée la même, mais il peut y avoir différentes raisons. Dans ce cas, une nouvelle entrée de la pièce d'identité devrait être hors de portée.Solution
Si c'est la cause de votre problème, vous pouvez résoudre le problème par la mise en
AUTO_INCREMENT
à un plus grand que la dernière ligne de l'id. Donc, si votre dernière ligne, id est de 100, alors:Si vous souhaitez vérifier
AUTO_INCREMENT
's valeur actuelle, utilisez cette commande: