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; Также устраните источник некорректных данных.
Ещё по этой СУБД
- 1927MariaDB: ER_CONNECTION_KILLED: Connection was killed
- 1290ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option
- 1836ER_READ_ONLY_MODE: Running in read-only mode
- 1118ER_TOO_BIG_ROWSIZE: Row size too large
- 1170ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text