it-swarm.com.de

Ist ein VARCHAR (20000) in MySQL gültig?

Ich benötige eine Klarstellung der maximalen Länge eines varchar-Feldes in MySQL.

Ich habe immer gedacht, dass die maximale Länge 255 ist (255 was? Zeichen, die ich angenommen habe, aber dies könnte eine Quelle meiner Verwirrung sein). Wenn ich mir die Tabellen einer Datenbank ansehe, die von einem externen Unternehmen eingerichtet wurde, mit dem wir arbeiten, sehe ich ein Feld, das als varchar (20000) eingerichtet ist und Teile von xml enthält, die länger als 255 Zeichen sind. Warum funktioniert das? Ist 20000 ein gültiger Wert?

Ein bisschen googeln hat ergeben, dass varchar in mysql ein Limit von 65.535 Bytes hat, und ich sehe varchar (65535) in use , also wie hängt das Limit von 255 damit zusammen?

60
Zoe

Beachten Sie die MySQL-Versionen.

http://dev.mysql.com/doc/refman/5.0/en/char.html

Werte in VARCHAR-Spalten sind Zeichenfolgen variabler Länge. Die Länge kann als Wert zwischen 0 und 255 vor MySQL 5.0.3 und zwischen 0 und 65.535 in 5.0.3 und höheren Versionen angegeben werden. Die effektive maximale Länge eines VARCHAR in MySQL 5.0.3 und höher hängt von der maximalen Zeilengröße (65.535 Byte, die von allen Spalten gemeinsam genutzt wird) und dem verwendeten Zeichensatz ab.

Welche Version von MySQL habe ich?

Führen Sie die folgende Abfrage aus ...

select version() as myVersion
72
Sampson

Es ist gültig seit Version 5.0.3, als die maximale Länge von 255 auf 65535 geändert wurde.

CHAR war immer maximal 255.

http://dev.mysql.com/doc/refman/5.0/en/char.html

12

Wenn Sie zu große Eingaben erwarten, ist es eine bessere Idee, stattdessen TEXT, MEDIUMTEXT oder LONGTEXT zu verwenden.

8
Havenard

Obwohl der Index nicht auf varchar (2000) aufgebaut werden kann

3
shantanuo

Diese Frage hat bereits eine Antwort auf Was ist die maximale Größe von MySQL VARCHAR?

Beachten Sie, dass MySQL eine maximale Zeilengröße hat

Die interne Darstellung einer MySQL-Tabelle hat eine maximale Zeilengröße von 65.535 Bytes, wobei die BLOB- und TEXT-Typen nicht berücksichtigt werden. BLOB- und TEXT-Spalten tragen nur 9 bis 12 Byte zur Zeilengrößenbeschränkung bei, da ihr Inhalt vom Rest der Zeile getrennt gespeichert wird. Lesen Sie mehr über Grenzen der Anzahl der Tabellenspalten und der Zeilengröße.

Die maximale Größe, die eine einzelne Spalte einnehmen kann, ist vor und nach MySQL 5.0.3 unterschiedlich.

Werte in VARCHAR-Spalten sind Zeichenfolgen variabler Länge. Die Länge kann als Wert zwischen 0 und 255 vor MySQL 5.0.3 und zwischen 0 und 65.535 in 5.0.3 und höheren Versionen angegeben werden. Die effektive maximale Länge eines VARCHAR in MySQL 5.0.3 und höher hängt von der maximalen Zeilengröße (65.535 Byte, die von allen Spalten gemeinsam genutzt wird) und dem verwendeten Zeichensatz ab.

Beachten Sie jedoch, dass das Limit niedriger ist, wenn Sie einen Multibyte-Zeichensatz wie utf8 oder utf8mb4 verwenden.

Verwenden Sie TEXT Typen, um die Begrenzung der Zeilengröße zu überwinden.

Die vier TEXT-Typen sind TINYTEXT, TEXT, MEDIUMTEXT und LONGTEXT. Diese entsprechen den vier BLOB-Typen und haben die gleichen maximalen Längen und Speicheranforderungen.

2
rajukoyilandy

Im MySQL-Handbuch heißt es

Werte in VARCHAR-Spalten sind Zeichenfolgen variabler Länge. Die Länge kann als Wert zwischen 0 und 255 vor MySQL 5.0.3 und zwischen 0 und 65.535 in 5.0.3 und höheren Versionen angegeben werden.

Das hängt also von der Version ab, die Sie verwenden.

1
pavium