@immelnikoff
Изучаю БД

В MySQL не работает STRICT_TRANS_TABLES. Почему?

5aaa686779dc7602625819.png
Глобальный и сессионный режим сервера имеют значение STRICT_TRANS_TABLES, то есть БД находится в строгом режиме. Но как видно на скрине терминала MySQL 5.7 выше, таблица (InnoDB) ведет себя, как в нестрогом режиме: при insert с опущенным значением для ENUM-поля с NOT NULL должна выпадать ошибка, а на деле этому полю присваивается значение по умолчанию для данного типа данных – первое значение из списка для данного поля ENUM.
Что не так?
  • Вопрос задан
  • 225 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега MySQL
Web developer
Это правильное поведение, описанное в документации https://dev.mysql.com/doc/refman/5.7/en/enum.html
If an ENUM column is declared NOT NULL, its default value is the first element of the list of permitted values.

Для strict mode исключений нет.

strict mode даст ошибку только при неправильном значение (NULL к таковым не относится).
If strict SQL mode is enabled, attempts to insert invalid ENUM values result in an error.
Ответ написан
Ваш ответ на вопрос

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

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