Mysql 오류 1452: 외래 키 제약 조건으로 인해 하위 행 추가 또는 업데이트 실패
sourcecodes_tags 테이블에 외래 키를 추가하려고 할 때 소스코드 테이블을 참조하면 "Mysql error 1452 - Cannot add or"라는 오류가 발생합니다. 하위 행 업데이트: 외래 키 제약 조건이 실패합니다."
문제 이해
이 오류는 일반적으로 sourcecodes_tags 테이블에 있는 sourcecode_id 값이 다음과 같이 존재하지 않음을 나타냅니다. 소스 코드 테이블의 해당 기본 키 값(id)입니다. MySQL은 참조 무결성을 시행하여 외래 키가 상위 테이블의 유효한 기본 키를 참조하도록 보장합니다.
오류 해결
이 오류를 해결하려면 다음을 식별하고 sourcecodes_tags 테이블에서 고아 sourcecode_id 값을 제거합니다. 누락된 기본 키 값을 찾으려면 다음 쿼리를 실행하십시오.
SELECT DISTINCT sourcecode_id FROM sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id WHERE sc.id IS NULL;
이 쿼리는 sourcecodes 테이블에 없는 sourcecode_id 값 목록을 반환합니다. 식별되면 DELETE 문을 사용하여 이러한 고아 값을 제거할 수 있습니다.
DELETE FROM sourcecodes_tags WHERE sourcecode_id IN (SELECT DISTINCT sourcecode_id FROM sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id WHERE sc.id IS NULL);
고아 값을 제거한 후 ALTER TABLE 문을 다시 실행하여 외래 키를 추가합니다.
ALTER TABLE sourcecodes_tags ADD FOREIGN KEY (sourcecode_id) REFERENCES sourcecodes (id) ON DELETE CASCADE ON UPDATE CASCADE;
이렇게 하면 오류 없이 외래 키 제약 조건이 성공적으로 생성됩니다.
위 내용은 MySQL 오류 1452를 해결하는 방법: 외래 키 제약 조건이 실패합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!