DBAtlas · Atlas de operaciones de bases de datos

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.

Abrir en DBAtlas →

Más entradas de este motor