【发布时间】:2011-03-21 01:29:25
【问题描述】:
我收到此错误消息:
第 40 行的错误 1217 (23000):不能 删除或更新父行:a 外键约束失败
...当我尝试删除表格时:
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),即表引用上没有架构名称:-?