У меня проблема с MySQL, у меня есть таблица со многими текстовыми полями. Когда я пытаюсь сохранить некоторые данные, я получаю эту ошибку.
Размер строки слишком велик. Максимальный размер строки для используемого типа таблицы, не считая BLOB, составляет 8126. Некоторые столбцы необходимо изменить на TEXT или BLOB.
Текст, который я храню в каждом поле, не слишком длинный, всего несколько абзацев в каждом.
Что я могу сделать?
Возможно, вы захотите взглянуть на эту статью, которая многое объясняет о размерах строк MySQL. Важно отметить, что даже если вы используете поля TEXT или BLOB, размер строки все равно может превышать 8 КБ (ограничение для InnoDB), поскольку он хранит первые 768 байт для каждого встроенного поля на странице. Самый простой способ исправить это - использовать формат файла Barracuda с InnoDB. Это в основном полностью избавляет от проблемы, сохраняя только 20-байтовый указатель на текстовые данные вместо 768-байтовых.
источник
Что ж, сделайте так, как говорит mysql: конвертируйте большие поля из varchar в текст или BLOB-объекты (ALTER TABLE). текстовые поля ведут себя подобно varchar (для индексов требуется длина префикса, но, тем не менее, они работают), но хранятся отдельно.
Эта ссылка говорит вам точные пределы для каждого движка таблицы mysql:
http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html
И вот что нужно знать о текстовых полях:
http://dev.mysql.com/doc/refman/5.0/en/blob.html
источник
В основном кросс-постинг из Stack Overflow , но это открытая (и проверенная) ошибка в движке InnoDB сервера MySQL . Временное исправление на данный момент - возврат к движку MyISAM в качестве временного хранилища. Итак, в вашем файле my.cnf:
источник