Comme _ SET
cust_fax dans un tableau MySQL comme celui-ci:
cust_fax integer(10) NOT NULL,
et puis j'insère une valeur comme ceci:
INSERT INTO database values ('3172978990');
mais alors il dit
`error 1264` out of value for column
Et je veux savoir où est l'erreur? Mon ensemble? Ou autre?
Toute réponse sera appréciée!
La valeur 3172978990 est supérieure à 2147483647 - la valeur maximale pour INT
- d'où l'erreur. Les types entiers MySQL et leurs plages sont listés ici .
Notez également que le (10)
dans INT(10)
ne définit pas la "taille" d'un entier. Il spécifie la largeur d'affichage de la colonne. Cette information est consultative seulement.
Pour corriger l'erreur, remplacez votre type de données par VARCHAR
. Les numéros de téléphone et de fax doivent être stockés sous forme de chaînes. Voir cette discussion .
Vous pouvez également changer le type de données en bigInt et cela résoudra votre problème. Il est déconseillé de conserver les entiers sous forme de chaînes, à moins que cela ne soit nécessaire. :)
ALTER TABLE T_PERSON MODIFY mobile_no BIGINT;
Vous dépassez la longueur du type de données int. Vous pouvez utiliser l'attribut UNSIGNED pour prendre en charge cette valeur.
SIGNED INT peut prendre en charge jusqu'à 2147483647 et avec NSIGNED INT autorise le double. Après cela, vous souhaitez toujours enregistrer des données, puis utilisez CHAR ou VARCHAR de longueur 10.
Assurez-vous que votre AUTO_INCREMENT
n'est pas hors de portée. Dans ce cas, définissez une nouvelle valeur avec:
ALTER TABLE table_name AUTO_INCREMENT=100 -- Change 100 to the desired number
AUTO_INCREMENT
peut contenir un nombre supérieur à la valeur maximale autorisée par le type de données. Cela peut arriver si vous remplissez une table que vous avez vidée par la suite mais que le AUTO_INCREMENT
reste inchangé, mais les raisons peuvent également être différentes. Dans ce cas, l'identifiant d'une nouvelle entrée serait hors de portée.
Si cela est la cause de votre problème, vous pouvez y remédier en définissant AUTO_INCREMENT
sur un identificateur plus grand que l'ID de la dernière ligne. Donc, si l'id de votre dernière ligne est 100, alors:
ALTER TABLE table_name AUTO_INCREMENT=101
Si vous souhaitez vérifier la valeur actuelle de AUTO_INCREMENT
, tilisez cette commande :
SELECT `AUTO_INCREMENT`
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DatabaseName'
AND TABLE_NAME = 'TableName';