반응형
이 외부 키 제약 조건이 잘못 형성된 이유는 무엇입니까?
내가 어떻게 이 질문에 도달하게 되었는지는 오류 메시지 그 자체입니다.
먼저 오류 메시지입니다.1452: Cannot add or update a child row: a foreign key constraint fails
.
유효한 외부 키를 사용하여 데이터를 삽입하려고 시도하지 않습니다.
이 문제를 재현하기 위해 테이블을 다시 작성했는데, 새로운 오류가 발견되어 근본 원인에 더 가까워졌습니다.
Error Code: 1005. Can't create table `covers` (errno: 150 "Foreign key constraint is incorrectly formed")
표는 다음과 같습니다.
CREATE TABLE IF NOT EXISTS `entities` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`type` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`) )
ENGINE = InnoDB
AUTO_INCREMENT = 100001
PARTITION BY KEY() PARTITIONS 10 ;
CREATE TABLE IF NOT EXISTS `covers` (
`id` BIGINT(20) NOT NULL,
`title` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`) ,
CONSTRAINT `covers-id`
FOREIGN KEY (`id`)
REFERENCES `entities` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB ;
Workbench에서 설계된 새로운 데이터베이스입니다.Forward Engineer 스크립트에 의해 오류 없이 테이블이 생성되었지만 테이블에 문제가 있는 것 같습니다.
에서 출력 추가show engine innodb status
------------------------
LATEST FOREIGN KEY ERROR
------------------------
2016-06-21 17:42:46 7f7ffa000700 Error in foreign key constraint of table `baka`.`IF`:
Create table `baka`.`IF` with foreign key constraint failed. Referenced table `baka`.`entities` not found in the data dictionary near '
FOREIGN KEY (`id`)
REFERENCES `entities` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB'.
저도 같은 문제가 있었어요.내 일의 근원은 그 테이블들의 엔진이 같지 않다는 것입니다.그래서 제 해결책은 두 테이블에 동일한 엔진을 설치하는 것이었습니다.
분할된 테이블은 다른 테이블의 외부 키 제약 조건으로 참조할 수 없습니다.
여기도 같은 문제입니다.오류는 복원 중인 덤프 파일의 테이블 순서가 잘못되었다는 것입니다.따라서 먼저 문제를 해결하기 위해 참조된 표를 수동으로 작성하면 됩니다.
언급URL : https://stackoverflow.com/questions/37939255/why-is-this-foreign-key-constraint-incorrectly-formed
반응형
'programing' 카테고리의 다른 글
Python에서 변수와 문자열을 같은 줄에 인쇄하려면 어떻게 해야 하나요? (0) | 2022.10.30 |
---|---|
Ajax 요청을 사용하여 파일 다운로드 (0) | 2022.10.30 |
Java Android 코드에서 string.xml 리소스 파일에 액세스합니다. (0) | 2022.10.29 |
로컬에서 mysql 도커에 연결할 수 없습니다. (0) | 2022.10.29 |
nuxt js를 사용하여 모든 페이지에 글꼴을 삽입하는 방법 (0) | 2022.10.29 |