DBAtlas · Atlas für Datenbankbetrieb

3819: ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated

MySQL

Was bedeutet das?

Die Zeile, die du einfügst oder aktualisierst, verletzt einen auf der Tabelle definierten CHECK-Constraint. Ab MySQL 8.0.16 werden CHECK-Constraints tatsächlich durchgesetzt (frühere Versionen ignorierten sie).

Ursache

Der Spaltenwert erfüllt die Bedingung im CHECK-Ausdruck nicht (z. B. Eingabe eines negativen Preises bei CHECK (price >= 0)). Nach einem Upgrade von älteren MySQL-Versionen auf 8.0.16+ kann der Fehler unerwartet auftreten, weil zuvor ignorierte Constraints nun durchgesetzt werden.

Lösung

Stelle sicher, dass der Wert die Constraint-Bedingung erfüllt; ergänze eine Validierung in der Anwendung. Constraint-Definition anzeigen: SHOW CREATE TABLE my_table; Ist der Constraint wirklich überflüssig: ALTER TABLE my_table DROP CHECK constraint_name; oder vorübergehend ALTER TABLE my_table ALTER CHECK constraint_name NOT ENFORCED; Behebe außerdem die Quelle der fehlerhaften Daten.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank