VARCHAR (20000) действителен в MySQL? - PullRequest
       14

VARCHAR (20000) действителен в MySQL?

60 голосов
/ 20 августа 2009

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

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

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

Ответы [ 6 ]

71 голосов
/ 20 августа 2009

Обратите внимание на версии 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
12 голосов
/ 20 августа 2009

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

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

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

8 голосов
/ 20 августа 2009

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

3 голосов
/ 27 сентября 2009

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

2 голосов
/ 14 января 2017

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

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

Внутреннее представление таблицы MySQL имеет максимальный предел размера строки 65 535 байт, не считая BLOB и TEXT типов. Столбцы 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 и более поздних версиях зависит от максимального размера строки (65 535 байт, который распределяется между всеми столбцами) и используемого набора символов.

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

Используйте TEXT тип порядка для преодоления ограничения размера строки.

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

1 голос
/ 20 августа 2009

В руководстве MySQL указано

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

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

...