Для клиентов

Логин:
Пароль:

Загруженность

12.12.2024 - 22.12.2024

Календарь

Ссылки по теме

MySQL ошибка "BLOB/TEXT column '...' can't have a default value"

Заметки на полях

Уже неоднократно сталкивался с ситуацией, когда после апгрейда MySQL до последних версий, старые дампы перестают работать, приводя во время создания таблиц ко ошибке "BLOB/TEXT column '...' can't have a default value". Это происходит из-за того, что очень долго MySQL не обращал внимание (давал только предупреждение) на то, что некорректно указывать default value (значение по умолчанию) у полей типа TEXT и BLOB. За это время накопилась масса кода, который не рассчитан, что такая "невинная шалость" будет вызывать фатальные последствия (в виде невыполнения комманды).

Самым правильным с пособом исправления, конечно же, является исправление исходного кода, удаление из него default value, где это не положено. Однако, бывает так, что код чужой, кода много, разбираться не хочется. Короче всякое бывает :-) В этих случаях можно объяснить MySQL, что это не такая уж и большая беда, что он может игнорировать эти конструкции, как делал столько лет до этого.

Для исправления ситуации надо всего лишь изменить режим работы MySQL. Для этого в файле my.ini (my.conf для Unix) заменить строчку sql-mode

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

на

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Т.е. убрать там диррективу "STRICT_TRANS_TABLES". Именно эта излишняя строгость делает MySQL таким несговорчивым.

Стоит отметить, что на машинах под управлением windows файл настроек иногда приходится довольно долго искать. Он может оказаться не обязательно в c:\ или c:\windows, а, например, в каталоге установки MySQL или в c:\Docuemnts and settings\All Users\MySQL\my.ini. В общем поиск по всему системному диску (или где у вас установленный домашние каталоги пользователей) может дать разгадку!

Удачи!
 

ФИО*:
email*:
Отзыв*:
Код*
# DJ-X ответить
Спасибо!
06/09/2016 10:36:05