DBAtlas · データベース運用アトラス

3819: ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated(CHECK 制約違反)

MySQL

意味

挿入または更新しようとしている行が、テーブルに定義された CHECK 制約に違反している。MySQL 8.0.16 以降では CHECK 制約が実際に強制される (以前のバージョンでは無視されていた)。

原因

列の値が CHECK 式の条件を満たさない (例: CHECK (price >= 0) があるのに負の価格を入力)。古い MySQL から 8.0.16 以降にアップグレードした後、以前は無視されていた制約が強制されるようになり、予期せず発生することがある。

対処方法

値が制約条件を満たすようにし、アプリケーション側に検証を追加する。制約定義の確認: SHOW CREATE TABLE my_table; 制約が本当に不要な場合: ALTER TABLE my_table DROP CHECK constraint_name; または一時的に ALTER TABLE my_table ALTER CHECK constraint_name NOT ENFORCED; 不正データの発生源も修正する。

DBAtlas で開く →

同じデータベースの他の項目