it-swarm.com.de

MySQL-Fehler 1264: Wert außerhalb des Bereichs für Spalte

Als ich SET cust_fax in einer Tabelle in MySQL wie folgt:

cust_fax integer(10) NOT NULL,

und dann füge ich den folgenden Wert ein:

INSERT INTO database values ('3172978990');

aber dann heißt es

`error 1264` out of value for column

Und ich möchte wissen, wo der Fehler liegt? Mein Set? Oder andere?

Jede Antwort wird geschätzt!

57
Cin

Der Wert 3172978990 ist größer als 2147483647 - der Maximalwert für INT - daher der Fehler. MySQL-Integer-Typen und ihre Bereiche sind hier aufgelistet .

Beachten Sie auch, dass (10) In INT(10) nicht die "Größe" einer Ganzzahl definiert. Es gibt die Anzeigebreite der Spalte an. Diese Informationen dienen nur zur Information.

Um den Fehler zu beheben, ändern Sie Ihren Datentyp in VARCHAR. Telefon- und Faxnummern sollten als Zeichenfolgen gespeichert werden. Siehe diese Diskussion .

82
Salman A

Sie können den Datentyp auch in bigInt ändern. Dadurch wird Ihr Problem behoben. Es ist keine gute Praxis, Ganzzahlen als Zeichenfolgen beizubehalten, es sei denn, dies wird benötigt. :)

ALTER TABLE T_PERSON MODIFY mobile_no BIGINT;
19
Rohit Kolhekar

Sie haben die Länge des Datentyps int überschritten. Sie können das vorzeichenlose Attribut verwenden, um diesen Wert zu unterstützen.

SIGNED INT unterstützt bis 2147483647 und erlaubt mit NSIGNED INT das Doppelte. Danach möchten Sie noch Daten speichern, als CHAR oder VARCHAR mit der Länge 10 zu verwenden

12
Saharsh Shah

tl; dr

Stellen Sie sicher, dass Ihre AUTO_INCREMENT liegt nicht außerhalb des zulässigen Bereichs. In diesem Fall setzen Sie einen neuen Wert dafür mit:

ALTER TABLE table_name AUTO_INCREMENT=100 -- Change 100 to the desired number

Erläuterung

AUTO_INCREMENT kann eine Zahl enthalten, die größer ist als der vom Datentyp maximal zulässige Wert. Dies kann passieren, wenn Sie einen Tisch gefüllt haben, den Sie anschließend geleert haben, aber der AUTO_INCREMENT blieb gleich, aber es kann auch andere Gründe geben. In diesem Fall liegt die ID eines neuen Eintrags außerhalb des gültigen Bereichs.

Lösung

Wenn dies die Ursache Ihres Problems ist, können Sie es beheben, indem Sie AUTO_INCREMENT um eins größer als die ID der letzten Zeile. Wenn also die ID Ihrer letzten Zeile 100 lautet, gilt Folgendes:

ALTER TABLE table_name AUTO_INCREMENT=101

Wenn Sie AUTO_INCREMENTs aktueller Wert, benutze diesen Befehl :

SELECT `AUTO_INCREMENT`
FROM  INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DatabaseName'
AND   TABLE_NAME   = 'TableName';
3
totymedli