badbizarre
@badbizarre

Сменил хост получил, Field 'поле' doesn't have a default value?

Проблема появилась после смены хоста, на локалке и на старом серваке - всё пашет норм. БД очень большая, везде проставлять поля со значением NULL по дефолту, нереальо. Я так пологаю проблема в версии mysql, но может и в другом причина?
  • Вопрос задан
  • 14093 просмотра
Решения вопроса 1
badbizarre
@badbizarre Автор вопроса
Если у вас возникает ошибка 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= ''
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
Проблема в вашем коде. Наконец-то mysql начал об этом говорить. Нельзя писать в таблицу, не указывая явным образом значения для всех полей, не имеющих default значения.

Вероятно, вы смигрировались на mysql 5.7. Там как раз sql_mode дефолтный наконец-то изменили. А может просто более адекватно sql_mode выставлен админом.
dev.mysql.com/doc/refman/5.7/en/sql-mode.html
На сколько помню, за поведение ошибочного insert'а без указания non-default полей отвечают STRICT_ALL_TABLES, STRICT_TRANS_TABLES.
Ответ написан
У меня при копировании таблицы потерялось значение AUTO_INCREMENT. Проставил вручную таблица заработала. Не знаю почему не с копировалось значение AUTO_INCREMENT для поля с первичным ключом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы