MySQL 외래 키 제약 조건 오류 문제 해결 가이드
소개
데이터베이스의 테이블에 대해 외래 키 제약 조건을 설정할 때 생성 또는 수정 중에 오류가 발생할 수 있습니다. 이러한 오류 중 하나는 "ERROR 1215 (HY000): 외래 키 제약 조건을 추가할 수 없습니다"입니다.
사례: 환자 및 예약 테이블의 외래 키 제약 조건 문제
환자 및 약속 테이블에 외래 키 제약 조건을 추가하는 동안 다음 SQL 쿼리에서 오류가 발생했습니다.
<code class="language-sql">CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Patient` ( ... CONSTRAINT `FK_MedicalHistory` FOREIGN KEY (`MedicalHistory`) REFERENCES `doctorsoffice`.`medicalhistory` (`MedicalHistoryID`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `FK_PrimaryPhysician` FOREIGN KEY (`PrimaryPhysician`) REFERENCES `doctorsoffice`.`doctor` (`DoctorID`) ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Appointment` ( ... CONSTRAINT `FK_Patient` FOREIGN KEY (`Patient`) REFERENCES `doctorsoffice`.`Patient` (`PatientID`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `FK_Doctor` FOREIGN KEY (`Doctor`) REFERENCES `doctorsoffice`.`doctor` (`DoctorID`) ON DELETE CASCADE ON UPDATE CASCADE );</code>
해결책: 데이터 유형 호환성 확인
이 문제를 해결하려면 외래 키 제약 조건과 관련된 열의 데이터 유형이 호환되는지 확인하세요. 이 경우 다음을 확인하세요.
이러한 데이터 유형 불일치를 수정한 후 외래 키 제약 조건을 성공적으로 추가할 수 있습니다.
추가 팁: 외래 키 검사 비활성화
특정 순서로 테이블을 생성할 때 유연성을 더 높이려면 SQL 쿼리를 실행하기 전에 다음 명령을 사용하는 것이 좋습니다.
<code class="language-sql">SET foreign_key_checks=0;</code>
이 명령은 외래 키 검사를 일시적으로 비활성화하여 상위-하위 테이블 종속성에 관계없이 테이블을 생성할 수 있도록 합니다. 테이블이 생성된 후 다음 명령을 사용하여 외래 키 검사를 다시 활성화할 수 있습니다.
<code class="language-sql">SET foreign_key_checks=1;</code>
이러한 지침을 따르면 외래 키 제약 조건이 데이터베이스에 올바르게 구현되어 오류를 방지하고 데이터 무결성을 유지할 수 있습니다.
위 내용은 MySQL에서 '외래 키 제약 조건을 추가할 수 없습니다' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!