Ошибка «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»: 12 комментариев

  1. karamush

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

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

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