이 오류 메시지가 나타납니다.
40 행의 오류 1217 (23000) : 상위 행을 삭제하거나 업데이트 할 수 없습니다. 외래 키 제약 조건이 실패합니다.
... 테이블을 삭제하려고 할 때 :
DROP TABLE IF EXISTS `area`;
... 다음과 같이 정의됩니다.
CREATE TABLE `area` (
`area_id` char(3) COLLATE utf8_spanish_ci NOT NULL,
`nombre_area` varchar(30) COLLATE utf8_spanish_ci NOT NULL,
`descripcion_area` varchar(100) COLLATE utf8_spanish_ci NOT NULL,
PRIMARY KEY (`area_id`),
UNIQUE KEY `nombre_area_UNIQUE` (`nombre_area`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
재미있는 점은 에 대한 외래 키가있는 스키마의 다른 모든 테이블 을 이미 삭제 했다는 것입니다 area
. 실제로 데이터베이스는 area
테이블을 제외하고 비어 있습니다.
데이터베이스에 다른 개체가 없으면 어떻게 자식 행을 가질 수 있습니까? 내가 아는 한 InnoDB는 다른 스키마의 외래 키를 허용하지 않습니다.
( RENAME TABLE area TO something_else
명령을 실행할 수도 있습니다 :-?)
CONSTRAINT fk_servicio_area1 FOREIGN KEY (area_id) REFERENCES area (area_id)
즉, 테이블 참조에 스키마 이름이 없습니다.