Я экспериментирую с типом данных перечисления MySQL. У меня есть таблица 15 столбцов, из которых 7 типов данных ENUM. Нет VARCHAR, максимальный столбец - введите DATETIME. Так что я должен быть в пределах 65535 байтов в MySQL. Даже в пределах 1000 байтов для InnoDB.
Типы ENUM имеют много возможностей для больших строк (в пределах 1000 с для 2 столбцов). Я просто изменил таблицу, чтобы добавить больше значений ENUM в таблицу
ALTER TABLE <tablename> MODIFY <enumCol> ([...1000 values each of max 40 bytes]);
и получил эту ошибку после этого -
ERROR 1117 (HY000): Too many columns
Я исследовал это и обнаружил, что эта ошибка связана с максимальным размером строки для таблиц MySql.
Также я читаю здесь http://dev.mysql.com/doc/refman/5.1/en/column-count-limit.html, что -
В каждой таблице есть файл .frm, содержащий определение таблицы. Сервер использует следующее выражение, чтобы проверить некоторую информацию таблицы, хранящуюся в файле, с верхним пределом 64 КБ
Эти типы значений ENUM хранятся здесь случайно, что приводит к ошибке (файл .frm> 64 КБ)? Или что-то совершенно другое происходит?