3819: ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated (a constraint CHECK foi violada)
MySQLO 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.
Mais entradas deste banco
- 1927MariaDB: ER_CONNECTION_KILLED: Connection was killed (a conexão foi encerrada)
- 1290ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option (em execução com a opção --read-only)
- 1836ER_READ_ONLY_MODE: Running in read-only mode (em execução no modo somente leitura)
- 1118ER_TOO_BIG_ROWSIZE: Row size too large
- 1170ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length (coluna BLOB/TEXT usada em uma chave sem comprimento de chave)
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log (comando inseguro gravado no binary log)
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text