3819: ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated (se infringe la restricción CHECK)
MySQL¿Qué significa?
La fila que inserta o actualiza infringe una restricción CHECK definida en la tabla. En MySQL 8.0.16 y posteriores, las restricciones CHECK se aplican realmente (las versiones anteriores las ignoraban).
¿Por qué ocurre?
El valor de la columna no cumple la condición de la expresión CHECK (p. ej., introducir un precio negativo cuando existe CHECK (price >= 0)). Tras actualizar desde versiones antiguas de MySQL a 8.0.16+, puede aparecer de forma inesperada porque ahora se aplican restricciones que antes se ignoraban.
Cómo solucionarlo
Asegúrese de que el valor cumpla la condición de la restricción; añada validación en el lado de la aplicación. Para ver la definición de la restricción: SHOW CREATE TABLE my_table; Si la restricción es realmente innecesaria: ALTER TABLE my_table DROP CHECK constraint_name; o temporalmente ALTER TABLE my_table ALTER CHECK constraint_name NOT ENFORCED; Corrija también el origen de los datos erróneos.
Más entradas de este motor
- 1927MariaDB: ER_CONNECTION_KILLED: Connection was killed (la conexión fue terminada)
- 1290ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option (se ejecuta con la opción --read-only)
- 1836ER_READ_ONLY_MODE: Running in read-only mode (se ejecuta en modo de solo lectura)
- 1118ER_TOO_BIG_ROWSIZE: Row size too large
- 1170ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length (columna BLOB/TEXT usada en una clave sin longitud de clave)
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log (sentencia no segura escrita en el binary log)
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text