Задать вопрос
@immelnikoff
Изучаю БД

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

5aaa686779dc7602625819.png
Глобальный и сессионный режим сервера имеют значение STRICT_TRANS_TABLES, то есть БД находится в строгом режиме. Но как видно на скрине терминала MySQL 5.7 выше, таблица (InnoDB) ведет себя, как в нестрогом режиме: при insert с опущенным значением для ENUM-поля с NOT NULL должна выпадать ошибка, а на деле этому полю присваивается значение по умолчанию для данного типа данных – первое значение из списка для данного поля ENUM.
Что не так?
  • Вопрос задан
  • 230 просмотров
Подписаться 2 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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.
Ответ написан
Ваш ответ на вопрос

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

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