mysql int-Feld immer größer als 11 Ziffern
Ich habe eine mysql-Datenbank, und ich benutze es als temprorarily store captcha-Werte. Es hat eine automatische Inkrementierung der id-Schlüssel, mit int(11)
Feld. Was passiert, wenn dieser Wert größer als 11 Zeichen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einem typischen INT belegt 4 Byte, so kann es speichern Sie die Nummern:
Unterzeichnet:
-2147483648 to 2147483647
Unsigned:
0 to 4294967295
Einen BIGINT verwendet 8 bytes, so kann es speichern Sie die Nummern:
Unterzeichnet:
-9223372036854775808 to 9223372036854775808
Unsigned:
0 to 18446744073709551615
Diese Zahl (
11
) absolut nichts zu tun hat mit der Spalte range -[SIGNED] INTEGER
definiert einen Bereich (-2147483648 - 2147483647
).Zahl innerhalb von Klammern wird nur verwendet, wenn in Kombination mit
ZEROFILL
. Dann ist es bestimmt die "Länge" der angezeigten Nummer, dh. Wert275552
zurückgegeben werden, als string00000275552
.Wie schon andere gesagt haben, Sie gewann T get eine Zahl mit 11 stellen. Wenn Sie erreichen den maximalen Wert, alle Werte überschreiten, werden behandelt, als wären Sie der maximale Wert. Im Fall von auto_increment-Felder, wird es dazu führen, dass alle zukünftigen Einsätze zu scheitern, bis Sie Sie ändern die Spalte Art, um eine
BIGINT
:ERROR 1062 (23000): Duplicate entry '4294967295' for key 1
int(11)
akzeptieren nur die ersten 11 Ziffern. rest wird verworfen.Sie können Ihre Tabelle, und ändern Sie Ihre id Datentyp von int zu
bigint
.Hoffe, das hilft.
Beim erreichen der maximal-Wert, alle Werte überschreiten, werden behandelt, als wären Sie der maximale Wert. Im Fall von auto_increment-Felder, wird es dazu führen, dass alle zukünftigen Einsätze zu scheitern, bis Sie Sie ändern die Spalte Art, um eine BIGINT: