@romicohen
Системный Архитектор

Почему один MySQL-сервер выбрасывает «Field 'some_field' doesn't have a default value», а другой просто инсертит пустое значение в 'some_field'?

Работаю с легаси. Столкнулся с такой ситуацией.

1. MySQL-сервер на хостинге А нормально отрабатывает INSERT INTO (бла-бла-бла)

2. А другой на другом хостинге тоже самое бла-бла-бла не вставляет, выдает:

SQLSTATE[HY000]: General error: 1364 Field 'some_field' doesn't have a default value
The SQL being executed was: INSERT INTO...


Поле 'some_field' - это varchar, not-null, без значения по умолчанию.

И поведение второго сервера в принципе - правильное, он отказывается вставить запись, где в параметрах INSERT INTO не передано 'some_field' (а оно там не передано).

Но в таком случае - почему первый сервер этот же запрос обрабатывает, вставляя туда пустое (не NULL, поле-то - not-null, а именно пустое) значение?

Повторюсь: скрипт и там и там - идентичный, структура БД - тоже.

Есть ли какие-то настройки MySQL-сервера, влияющие на такое поведение? Это пока единственное что приходит мне в голову.

И да, оба сервера - 5.7 версии.

Спасибо.
  • Вопрос задан
  • 78 просмотров
Решения вопроса 2
iMedved2009
@iMedved2009
Не люблю людей
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Объяснение очень легко гуглится по тексту ошибки.
За это поведение отвечает Mysql strict mode
На одном сервере этот режим включён, на втором - выключен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы