Какова максимальная длина для значения ENUM? - PullRequest
6 голосов
/ 29 ноября 2010

Поиск по документам , но безрезультатно.
Какова максимальная длина значения перечисления, то есть строкового литерала?

Ответы [ 2 ]

8 голосов
/ 30 ноября 2010

Ограничение не на длину буквенной строки, а на определение таблицы.

В документации MySQL указано, что

Каждая таблица имеет файл .frm, который содержит определение таблицы. Сервер использует следующее выражение для проверки некоторой информации таблицы, хранящейся в файле, с верхним пределом 64 КБ.

, за которым следует специальное уравнение, выражающее приблизительный размер определения таблицы.

Для простого теста, в таблице с несколькими полями, я получил мое перечисление длиной до 63136 символов, и .frm был 71775 байт (немного больше, чем 70 КБ), поэтому ограничение приблизительное. В этот момент MySQL пожаловался #1117 - Too many columns, что по меньшей мере вводит в заблуждение.

Интересно / странно / стоит отметить, что набор символов перечисления изменит максимальную длину. - даже если вы используете обычные символы, для каждого из которых требуется только 1 байт.

5 голосов
/ 19 марта 2013

Столбец ENUM может иметь максимум 65 535 различных элементов.(Практический предел составляет менее 3000.) Таблица может иметь не более 255 уникальных определений списка элементов среди столбцов ENUM и SET, рассматриваемых как группа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...