DBAtlas · Атлас эксплуатации баз данных

3819: ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated

MySQL

Что это значит?

Вставляемая или обновляемая строка нарушает ограничение CHECK, определённое для таблицы. В MySQL 8.0.16 и более поздних версиях ограничения CHECK действительно проверяются (более ранние версии их игнорировали).

Почему возникает?

Значение столбца не удовлетворяет условию в выражении CHECK (например, ввод отрицательной цены при наличии CHECK (price >= 0)). После обновления со старых версий MySQL до 8.0.16+ ошибка может появиться неожиданно, так как ранее игнорировавшиеся ограничения теперь проверяются.

Как исправить

Убедитесь, что значение удовлетворяет условию ограничения; добавьте проверку на стороне приложения. Чтобы увидеть определение ограничения: SHOW CREATE TABLE my_table; Если ограничение действительно не нужно: ALTER TABLE my_table DROP CHECK constraint_name; или временно ALTER TABLE my_table ALTER CHECK constraint_name NOT ENFORCED; Также устраните источник некорректных данных.

Открыть в DBAtlas →

Ещё по этой СУБД