Почему этот запрос ALTER TABLE MYSQL не выполняется (возвращает false)?Синтаксис выглядит правильным - PullRequest
0 голосов
/ 22 марта 2012

Я выполняю динамические запросы, основанные на добавлении удаления полей в категории. Вот пример запроса:

ALTER TABLE se_classifiedvalues 
  ADD classifiedvalue_402 varchar(250) NOT NULL default ''

MYSQL не жалуется на синтаксис, но возвращает false, когда я дам дамп запроса. Когда я бросил этот запрос в phpMyAdmin и попытался выполнить SQL, он бросил это:

#1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs

Кто-нибудь знает, что я могу сделать, чтобы это исправить?

спасибо

Ответы [ 2 ]

5 голосов
/ 22 марта 2012

Сколько столбцов в этой таблице уже?402?(Надеюсь нет).MySQL имеет ограничение на количество данных (в байтах), которое он может хранить в одной строке таблицы, и похоже, что вы достигли этого предела.

Редактировать: вот ссылка на сайт MySQL, гдеВы можете прочитать об ограничениях данных: http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html

Я думаю, вам нужно переосмыслить свои структуры данных.

Дополнительный вопрос: Вы используете ExpressionEngine?

2 голосов
/ 22 марта 2012

Сделать общий размер всех столбцов меньше предела 65 535 байт. Обратите внимание, что столбцы UTF8 считаются как 3 байта на символ.

65 535 - максимальный размер строки в байтах.

С MySQL :

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

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