>데이터 베이스 >MySQL 튜토리얼 >'외래 키 제약 조건을 추가하는 동안 하위 필드 데이터 유형 오류'가 발생하는 이유는 무엇입니까?

'외래 키 제약 조건을 추가하는 동안 하위 필드 데이터 유형 오류'가 발생하는 이유는 무엇입니까?

DDD
DDD원래의
2025-01-18 20:21:12714검색

Why Am I Getting

외래 키 제약 조건 오류 해결: "외래 키 제약 조건을 추가하는 동안 하위 필드 데이터 유형에 오류가 발생했습니다."

이 가이드에서는 'Patient', 'Appointment' 및 'MedicalHistory' 테이블 간에 외래 키 관계를 생성할 때 발생하는 일반적인 SQL 오류 "ERROR 1215 (HY000): 외래 키 제약 조건을 추가할 수 없습니다"를 해결합니다. 근본 원인은 일반적으로 제약 조건과 관련된 하위 열과 상위 열 간의 유형 불일치입니다.

문제를 진단하고 해결하는 방법은 다음과 같습니다.

  1. 데이터 유형 확인: 관련 열의 데이터 유형을 주의 깊게 검사합니다. '환자' 테이블의 'MedicalHistory' 열이 'MedicalHistory' 테이블의 'MedicalHistoryID' 열과 정확하게 일치하는지 확인합니다. 마찬가지로 'Appointment' 테이블의 'Patient' 열이 'Patient' 테이블의 'PatientID' 열을 정확히 미러링하는지 확인합니다. 사소한 차이(예: INT 대 SMALLINT, VARCHAR(255) 대 VARCHAR(256))로 인해 제약 조건이 추가되지 않습니다.

  2. 임시 외래 키 확인 비활성화: 외래 키를 추가하기 위해 ALTER TABLE 문을 실행하기 전에 SET FOREIGN_KEY_CHECKS=0;을 실행하세요. 이는 일시적으로 외래 키 확인을 비활성화하여 어떤 순서로든 테이블 생성을 허용합니다. 나중에 SET FOREIGN_KEY_CHECKS=1;를 사용하여 다시 활성화하는 것을 잊지 마세요.

  3. 상세 오류 분석: SHOW ENGINE INNODB STATUS;을 사용하여 '최근 외래 키 오류' 섹션을 검사하세요. 이는 실패한 제약 조건에 대한 구체적인 세부 정보를 제공하여 문제를 일으키는 정확한 열을 찾아냅니다.

  4. 예시: 'MedicalHistory' 테이블의 'MedicalHistoryID'가 INT으로 정의된 경우 'Patient' 테이블의 'MedicalHistory'도 반드시 INT, SMALLINT 또는 다른 유형이 아닙니다.

데이터 유형을 꼼꼼하게 비교하고 위에서 언급한 진단 도구를 활용하면 외래 키 제약 조건 오류를 효과적으로 해결하고 테이블 간의 올바른 관계를 설정할 수 있습니다. 제약 조건을 생성한 후에는 외래 키 검사(SET FOREIGN_KEY_CHECKS=1;)를 다시 활성화해야 합니다.

위 내용은 '외래 키 제약 조건을 추가하는 동안 하위 필드 데이터 유형 오류'가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.