Решение: General error: 1364 Field ‘MyField’ doesn’t have a default value


После обновления MySql до версии 5.5 начали вылетать непонятные ошибки. Например:

Error: SQLSTATE[HY000]: General error: 1364 Field ‘MyField’ doesn’t have a default value

Связано это с тем, что в новой версии базы включен по умолчанию режим STRICT_TRANS_TABLES.

Проверить это можно следующим запросом:

SELECT @@GLOBAL.sql_mode

В результате увидите что-то вроде:

STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION

Вот он тот самый STRICT_TRANS_TABLES. Данный режим выдает ошибки, когда вы пытаетесь добавить в базу записи, не указывая данные объявленные в таблице по умолчанию.

Для отключения нужно выполнить следующий запрос:

SET GLOBAL sql_mode='NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION'

Теперь проверим отключился ли режим:

SELECT @@GLOBAL.sql_mode

Увидим что отключен.

Но это не все, после перезагрузки MySql режим снова включится. Для того, что-бы избежать это необходимо удалить этот режим из конфигурационного файла my.ini.

Находим там строчку:

sql-mode='бла-бла-бла'

и удаляем из неё STRICT_TRANS_TABLES. Перезагружаем MySql.

 


Тэги:

Комментарии: 3

Прокомментировать »

 
 
Егорка
13.01.2015
 

Ну наконец! пол дня искал причину....

Алексей
23.05.2015
 

Спасибо! Долго искал проблему

Andrey
10.02.2016
 

Не помогло к сожалению( В моем случае - my.conf на lamp сервере sql_mode

 

Прокомментировать

 
 
Сообщение *
 
Проверочный код *
 
 
 
Яндекс.Метрика