DBAtlas · Atlas d'exploitation des bases de données

3819: ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated (contrainte CHECK violée)

MySQL

Que signifie cette erreur ?

La ligne que vous insérez ou mettez à jour viole une contrainte CHECK définie sur la table. Depuis MySQL 8.0.16, les contraintes CHECK sont réellement appliquées (les versions antérieures les ignoraient).

Cause

La valeur de la colonne ne satisfait pas la condition de l'expression CHECK (par ex. saisie d'un prix négatif alors que CHECK (price >= 0) existe). Après une montée de version d'anciennes versions de MySQL vers 8.0.16+, l'erreur peut apparaître de façon inattendue car des contraintes autrefois ignorées sont désormais appliquées.

Comment la corriger

Assurez-vous que la valeur satisfait la condition de la contrainte ; ajoutez une validation côté application. Pour voir la définition de la contrainte : SHOW CREATE TABLE my_table; Si la contrainte est vraiment inutile : ALTER TABLE my_table DROP CHECK constraint_name; ou temporairement ALTER TABLE my_table ALTER CHECK constraint_name NOT ENFORCED; Corrigez aussi la source des données erronées.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur