DBAtlas · Atlas de operações de banco de dados

3819: ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated (a constraint CHECK foi violada)

MySQL

O que significa?

A linha que você está inserindo ou atualizando viola uma constraint CHECK definida na tabela. No MySQL 8.0.16 e posteriores, as constraints CHECK são de fato aplicadas (versões anteriores as ignoravam).

Por que acontece?

O valor da coluna não satisfaz a condição da expressão CHECK (por exemplo, informar um preço negativo quando existe CHECK (price >= 0)). Após atualizar versões antigas do MySQL para 8.0.16+, pode surgir inesperadamente porque constraints antes ignoradas passam a ser aplicadas.

Como resolver

Garanta que o valor satisfaça a condição da constraint; adicione validação no lado da aplicação. Para ver a definição da constraint: SHOW CREATE TABLE my_table; Se a constraint for realmente desnecessária: ALTER TABLE my_table DROP CHECK constraint_name; ou, temporariamente, ALTER TABLE my_table ALTER CHECK constraint_name NOT ENFORCED; Corrija também a origem dos dados inválidos.

Abrir no DBAtlas →

Mais entradas deste banco