데이터베이스 삭제 작업 중 외래 키 제약 조건 충돌 오류가 발생했습니다
DELETE FROM jobs WHERE job_id = 1 LIMIT 1
쿼리를 사용하여 데이터를 삭제하려고 하면 외래 키 충돌이 발생했음을 나타내는 #1451 - Cannot delete or update a parent row: a foreign key constraint fails
오류 메시지가 나타날 수 있습니다. 이는 jobs
테이블에서 삭제할 행이 다른 테이블의 하위 행과 연결되어 있어 삭제 작업이 불가능함을 의미합니다.
이 문제에 대한 통찰력을 얻기 위해 제공된 데이터베이스 스키마를 살펴보겠습니다. advertisers
테이블은 advertiser_id
열의 외래 키를 통해 jobs
테이블을 참조합니다. 따라서 활성 광고주가 있는 작업을 삭제하면 외래 키 제약 조건 위반이 발생합니다.
솔루션
이 오류를 해결하려면 다음 두 가지 방법이 있습니다.
1. 외부 키 확인 비활성화:
한 가지 방법은 다음 SQL 명령을 사용하여 외래 키 검사를 일시적으로 비활성화하는 것입니다.
<code class="language-sql">SET FOREIGN_KEY_CHECKS=0; -- 禁用</code>
외래 키 검사를 비활성화하면 DELETE
쿼리가 성공적으로 실행될 수 있습니다. 삭제가 완료된 후 외래 키 검사를 다시 활성화해야 합니다.
<code class="language-sql">SET FOREIGN_KEY_CHECKS=1; -- 启用</code>
2. 참조 무결성 유지:
또 다른 접근 방식은 관련 테이블의 데이터를 수정하여 참조 무결성을 보장하는 것입니다. 예를 들어 jobs
테이블에 paymessomething.advertisers
테이블에 종속 행이 없으면 외래 키 제약 조건을 위반하지 않고 삭제 작업을 수행할 수 있습니다.
요약
오류 #1451 - Cannot delete or update a parent row: a foreign key constraint fails
는 외래 키 충돌을 나타냅니다. 이 문제를 해결하려면 외래 키 검사를 일시적으로 비활성화하거나 관련 테이블에 종속 하위 행이 없는지 확인하면 됩니다. 개발자는 테이블 간의 관계를 이해함으로써 데이터베이스 무결성을 효과적으로 유지하고 데이터베이스 작업 중 예기치 않은 오류를 방지할 수 있습니다.
위 내용은 데이터베이스 행 삭제 시 외래 키 제약 조건 위반을 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!