다른 2개의 테이블의 기본 키를 참조하는 2개의 외래 키를 사용하여 MySQL에서 테이블을 생성하려고 하는데 errno: 150
오류가 발생하고 테이블이 생성되지 않습니다.
다음은 3개 테이블 모두에 대한 SQL입니다.
으아아아P粉5628459412023-10-17 12:24:03
다음과 같은 경우 오류 150을 방지하려면 다음 조건을 충족해야 합니다. ALTER TABLE ADD FOREIGN KEY
을 지원해야 합니다. 다른 스토리지 엔진은 외래 키 정의를 자동으로 무시하므로 오류나 경고를 반환하지 않지만 FK 제약 조건을 저장하지 않습니다. ENGINE=InnoDB
인 경우 가장 좋습니다. PRIMARY KEY
或 UNIQUE KEY
순서가 열에 상위 PK를 정의하는 경우입니다. REFERENCES Parent(a,b,c)
,则不得按 (a,c,b)
< /p>
인 경우입니다. UNSIGNED
,请务必为子表字段中的相应列定义 UNSIGNED
와 그 반대의 경우도 마찬가지입니다. VARCHAR(10)
可以引用 VARCHAR(20)
으아악
일치하지 않는 값 0을 반환해야 합니다. 분명히 이 쿼리는 일반적인 예이므로 테이블 및 열 이름을 바꿔야 합니다.
테이블이 될 수 없습니다. TEMPORARY
옵션을 사용하여 FK를 선언하는 경우 FK 열은 null을 허용해야 합니다. ON DELETE SET NULL
이 일관되지 않은 관계로 잘못 정의된 과거 변경 때문일 수 있습니다. 이러한 문제가 있는 FK를 식별하는 방법에 대한 지침은 아래 @andrewdotn의 답변을 참조하세요. SET FOREIGN_KEY_CHECKS = 0;