Ошибка “Field xxx doesn’t have a default value”

Если у вас возникает ошибка mysql:

“Field xxx doesn’t have a default value”

это означает, что при вставке или обновлении данных у поля нет значения по умолчанию. Для решения проблемы нужно:

  • найти данный запрос и исправить его, добавить необходимое поле;
  • в свойствах таблицы указать значение по умолчанию;

Еще одним способом решения является выключение режима mysql: “Strict Mode”, т.е. мы выключаем режим строгого соответствия стандарту MySql.

Выключить его можно в конфиге my.ini:
прописав вместо:

# Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

следующий код:

# Set the SQL mode to strict
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Или выполнив следующий запрос:

SET @@GLOBAL.sql_mode= ''
SET @@SESSION.sql_mode= ''

При выключенном режиме strict mode:
для числовых значений по умолчанию будет 0, а
для строковых – будет пустая строка.

Ошибка “Field xxx doesn’t have a default value”: 13 комментариев

  1. karamush

    А я тут решил обновить сервер mysql )
    Всё заработало, но потом стал замечать, что появляются вот такие же ошибки, хотя конфигурацию не менял. И это странным показалось, ведь раньше автоматически ноль ставился для чисел и пустые строки для строковых полей, а тут начал ругаться на это… )
    Сначала я подправлял структуру табличек, ставя сам пустые значения по-умолчанию, но когда это стало часто повторяться, уже решил погуглить, попал на эту статью, помогло, спасибо!

  2. cyrax1000

    MySQL Server 5.7, Win7x64, не нашел my.ini даже поиск, предложенные запросы тоже не принимал, ругался. Сделал в PhpMyAdmin следующий запрос и помогло:

    set global sql_mode=”NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *