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에서 열기 →

같은 데이터베이스의 다른 항목