MySQL - 试图放弃一对一关系的一面

时间:2014-07-30 20:55:35

标签: mysql sql

我正在修改我当前的数据库架构。我想放弃一对一关系的孩子方面,但我不断得到关于外键约束的SQL错误,特别是:

  

#1217 - 无法删除或更新父行:外键约束失败

即使目前似乎没有任何外键(子表完全为空)。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

首先,从引用(子)表中删除外键约束,然后DROP引用的(父)表。

例如:

ALTER TABLE child
  DROP FOREIGN KEY FK_child_parent ;

DROP TABLE parent ;

(显然,您需要将“child”,“parent”和“FK_child_parent”替换为表和外键约束的实际标识符。

获取外键约束名称的一种简单方法是使用SHOW CREATE TABLE语句,

SHOW CREATE TABLE child ;

该输出将显示外键约束的名称。

如果您不知道哪些表具有引用该表的外键,您可以查询information_schema.referential_constraints表以查找它们

WHERE referenced_table_name = 'parent'
  AND constraint_schema = 'mydatabase'

答案 1 :(得分:0)

你试过吗

SET foreign_key_checks = 0;
//Do your drop statement
SET foreign_key_checks = 1;