3819: ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated
MySQLWas 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.
Weitere Einträge zu dieser Datenbank
- 1927MariaDB: ER_CONNECTION_KILLED: Connection was killed
- 1290ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option
- 1836ER_READ_ONLY_MODE: Running in read-only mode
- 1118ER_TOO_BIG_ROWSIZE: Row size too large
- 1170ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text