Если у вас возникает ошибка 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, а
для строковых — будет пустая строка.
Полезная информация, много часов потратил на разбор проблемы пока не прочитал данную статью!
Михаил, я тоже потратил несколько часов в свое время 🙂
Спасибо, очень помогли, потратила несколько минут благодаря Вам =)
спасибо, очень помогло, а то я уже хотел весь скрипт переписывать
Спасибо большое. уж и не знала как решить эту проблему
Спасибо большое и для автора и для Вадима который мне прислал этот ссылку.
Автору респект и уважуха. Спасибо!
Спасибо! Очень помогли.
А я тут решил обновить сервер mysql )
Всё заработало, но потом стал замечать, что появляются вот такие же ошибки, хотя конфигурацию не менял. И это странным показалось, ведь раньше автоматически ноль ставился для чисел и пустые строки для строковых полей, а тут начал ругаться на это… )
Сначала я подправлял структуру табличек, ставя сам пустые значения по-умолчанию, но когда это стало часто повторяться, уже решил погуглить, попал на эту статью, помогло, спасибо!
блин! ну почему я такой тупой как баран ?
На FeeBSD c MySQL 5.7 заработало c одинарныеми кавычками вит так:
sql-mode=’NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
sql_mode, а не sql-mode
MySQL Server 5.7, Win7x64, не нашел my.ini даже поиск, предложенные запросы тоже не принимал, ругался. Сделал в PhpMyAdmin следующий запрос и помогло:
set global sql_mode=»NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION»
Спасибо
set global sql_mode=»NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION»