Является ли VARCHAR(20000) действительным в MySQL?

Мне нужно некоторое уточнение максимальной длины поля varchar в MySQL.

Я всегда думал, что максимальная длина 255 (255 что? Персонажи, которые я предполагал,но это может быть источником моей путаницы). Взглянув на таблицы базы данных, созданной внешней компанией, с которой мы работаем, я вижу настройку поля как varchar(20000), содержащую куски xml длиной более 255 символов. Почему это работает? Это 20000 допустимое значение?

немного погуглил показал, что в mysql varchar имеет предел 65,535 байт, и я вижу varchar (65535) при использовании, так как же ограничение 255 относится к этому?

6 ответов


обратите внимание на версии MySQL.

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

значения в Столбцах VARCHAR являются строками переменной длины. Длина может быть указана как значение от 0 до 255 перед MySQL 5.0.3 и от 0 до 65.535 в 5.0.3 и более поздних версиях. Эффективная максимальная длина VARCHAR в MySQL 5.0.3 и позже зависит от максимального размера строки (65,535 байта, который разделяется между всеми столбцами) и набора символов используемый.

какая версия MySQL у меня есть?

выполните следующий запрос...

select version() as myVersion

он действителен с версии 5.0.3, когда они изменили максимальную длину с 255 до 65535.

CHAR всегда было 255 max.

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


Если вы ожидаете слишком больших входных данных, лучше использовать текст, MEDIUMTEXT или LONGTEXT.


хотя индекс не может быть построен на varchar(2000)


на этот вопрос уже есть ответ на Что такое максимальный размер MySQL VARCHAR?

имейте в виду, что MySQL имеет максимальный размер строки limit

внутреннее представление таблицы MySQL имеет максимальный предел размера строки 65,535 байт, не считая BLOB и типов текста. Столбцы BLOB и TEXT вносят только 9-12 байт в ограничение размера строки, поскольку их содержимое хранится отдельно от остальной части строки. Читать дальше о ограничения на количество столбцов таблицы и размер строки.

максимальный размер одного столбца может занимать, отличается до и после MySQL 5.0.3

значения в Столбцах VARCHAR являются строками переменной длины. Длина может быть указана как значение от 0 до 255 перед MySQL 5.0.3 и от 0 до 65,535 в 5.0.3 и более поздних версий. Эффективная максимальная длина VARCHAR в MySQL 5.0.3 и позже подлежит максимальный размер строки (65535 байт, который является общим для всех столбцов) и набор символов, используемый.

однако обратите внимание, что предел ниже, если вы используете многобайтовый набор символов, такой как utf8 или utf8mb4.

использовать TEXT типы inorder для преодоления ограничения размера строки.

четыре типа текста: TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT. Они соответствуют четырем типам BLOB и имеют одинаковую максимальную длину и хранение требования.


в руководстве MySQL говорится

значения в Столбцах VARCHAR являются строками переменной длины. Длина может быть указана как значение от 0 до 255 перед MySQL 5.0.3 и от 0 до 65.535 в 5.0.3 и более поздних версиях.

Так это зависит от версии, которую вы используете.