3819: ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated (contrainte CHECK violée)
MySQLQue 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.
Autres entrées pour ce moteur
- 1927MariaDB: ER_CONNECTION_KILLED: Connection was killed (la connexion a été tuée)
- 1290ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option (le serveur tourne avec l'option --read-only)
- 1836ER_READ_ONLY_MODE: Running in read-only mode (fonctionnement en mode lecture seule)
- 1118ER_TOO_BIG_ROWSIZE: Row size too large (taille de ligne trop grande)
- 1170ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length (colonne BLOB/TEXT utilisée dans une clé sans longueur de clé)
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log (instruction non sûre écrite dans le binary log)
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text (texte JSON invalide)