> 데이터 베이스 > MySQL 튜토리얼 > MySQL 오류 1452를 해결하는 방법: 외래 키 제약 조건이 실패합니까?

MySQL 오류 1452를 해결하는 방법: 외래 키 제약 조건이 실패합니까?

Susan Sarandon
풀어 주다: 2024-12-23 11:17:14
원래의
774명이 탐색했습니다.

How to Resolve MySQL Error 1452: Foreign Key Constraint Fails?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿