X
    Categories: MySQL

Ошибка «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, а
для строковых — будет пустая строка.

admin:

View Comments (15)

  • Полезная информация, много часов потратил на разбор проблемы пока не прочитал данную статью!

  • Спасибо, очень помогли, потратила несколько минут благодаря Вам =)

  • Спасибо большое и для автора и для Вадима который мне прислал этот ссылку.

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

Related Post