2017-11-07 12 views
1

Ich verwende MySQL, um eine 20-stellige ID-Nummer zu speichern. Wenn ich die Datenbank mit der folgenden Abfrage abfrage, erhalte ich den folgenden Fehler.MySQL Fehlercode: 1264. Out-of-Range-Wert für Spalte 'Spaltenname' in Zeile 1

Abfrage:

UPDATE tablename SET columnname = 59641217344615859740; 

Fehler:

Error Code: 1264. Out of range value for column 'columnname' at row 1 

Tabelle Info:

Engine: InnoDB
Row Format: Dynamic
Table Collation: utf8mb4_general_ci

Spalte Info:

Type: BIGINT(255)
Nullable: Yes
Privileges: Select, Insert, Update, References

Was mache ich falsch? Stimmt etwas mit meiner Anfrage nicht? Vielleicht mit den Tabellen- oder Spalteneinstellungen? Die meisten anderen, die diesen Fehler haben, verwenden keinen Spaltentyp wie BIGINT, aber ich habe am. Eine Antwort wird sehr geschätzt. Vielen Dank!

Antwort

1

es sieht aus wie Sie einen Wert zu groß für Ihre BIG INT Spalte zu speichern (5.9E + 19> MAX 9,2E + 18)!

Wenn man sich MySQL-Dokumentation:

https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

Sie haben die folgende MAX/MIN Werte:

SIGNED BIGINT MIN=-9223372036854775808 MAX=9223372036854775807

UNSIGNED BIGINT MIN=0 MAX= 18446744073709551615

Last but not least, würde ich empfehlen, die folgenden zu lesen Link wurden MySQL Error Code 1264 definiert und mit Beispielen erläutert:

https://dev.mysql.com/doc/refman/5.5/en/out-of-range-and-overflow.html

+0

oh gut, dass ich nicht wusste ... rate ich muss VARCHAR verwenden und parseInt() verwenden, wenn ich Mathe mit ihm haha ​​tun muss –

2
Your value:   59641217344615859740 
Max value of BIGINT: 9223372036854775807 

lesen https://dev.mysql.com/doc/refman/5.7/en/integer-types.html

Es macht keinen Unterschied, dass Sie BIGINT verwenden (255). The argument is only a hint for display width, wirkt sich dies nicht auf den Wertebereich aus, den Sie in einer 64-Bit-Ganzzahl mit Vorzeichen speichern können.

+0

oh gut, dass ich nicht ... denke, wusste ich VARCHAR verwenden und verwenden parseInt(), wenn ich durchführen müssen Mathe mit ihm haha ​​ –

2

Sie haben die MAXIMUM VALUE des von Ihnen verwendeten Datentyps erreicht.

MySQL supports the SQL standard integer types INTEGER (or INT) and SMALLINT. 
As an extension to the standard, MySQL also supports the integer types 
TINYINT, MEDIUMINT, and BIGINT. The following table shows the required storage 
and range for each integer type. 

Typ Speicherminimalwert Maximalwert

 (Bytes) (Signed/Unsigned) (Signed/Unsigned) 
TINYINT 1   -128   127 
         0    255 
SMALLINT 2  -32768   32767 
        0    65535 
MEDIUMINT 3  -8388608   8388607 
         0    16777215 
INT   4 -2147483648   2147483647 
         0    4294967295 
BIGINT  8 -9223372036854775808 9223372036854775807 
         0    18446744073709551615 
+0

oh gut, dass ich nicht wusste ... Ich denke, ich muss VARCHAR verwenden und parseInt() verwenden, wenn ich Mathe mit ihm haha ​​durchführen muss –

Verwandte Themen