加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

如何删除mySQL中引用多列的外键

发布时间:2022-10-21 14:33:08 所属栏目:MySql教程 来源:互联网
导读: 如何删除mySQL中引用多列的外键
mysql
如何删除mySQL中引用多列的外键,mysql,foreign-keys,Mysql,Foreign Keys,我有一个外键,它引用子表中的两列。我想删除外键,但mySQL只是挂起mysql删除

如何删除mySQL中引用多列的外键

mysql

如何删除mySQL中引用多列的外键,mysql,foreign-keys,Mysql,Foreign Keys,我有一个外键,它引用子表中的两列。我想删除外键,但mySQL只是挂起mysql删除表,什么也没发生:以下是“显示创建表\u名称”的输出:关键FK_动物指数(动物类型、食物指数),约束FK_动物索引外键(动物类型、食物索引)参考动物种类表(动物种类、食物指数)引擎=InnoDB我已尝试使用以下方法删除此外键:`ALTER TABLE table_name DROP FOREIGN KEY FK_animal_index;``ALTER TABLE table_name DROP FOREIGN

我有一个外键,它引用子表中的两列。我想删除外键,但mySQL只是挂起,什么也没发生:

以下是“显示创建表\u名称”的输出:

关键FK_动物指数(动物类型、食物指数),
约束FK_动物索引外键(动物类型、食物索引)
参考动物种类表(动物种类、食物指数)
引擎=InnoDB

我已尝试使用以下方法删除此外键:

`ALTER TABLE table_name DROP FOREIGN KEY FK_animal_index;`
`ALTER TABLE table_name DROP FOREIGN KEY animal_type;`

ALTER TABLE section\u configuration DROP外键FK\u animal\u index,
下拉键(动物类型、食物索引)

ALTER TABLE section\u configuration DROP FOREIGN KEY

FK\u animal\u index

,添加约束FK\u animal\u type FOREIGN KEY(animal\u type)REFERENCES

animal\u schedules

animal\u type

)ON DELETE SET NULL

其他人提到,未设置ON DELETE会阻止您更改键值(如果ON DELETE未设置为任何值,mySQL将拒绝更改)


但是没有用,mySQL只是挂起,30分钟后仍然什么都没有。数据库目前非常小,因此删除FK应该很快。

这个问题的答案根本不是关于主键。 我不得不停止我的程序访问该表,以便对其进行修改。
在mySQL db中,您可以随时添加表和列,但如果要更改列或删除列,任何程序都不能使用它,否则它将无限期挂起。

我猜它正在等待访问表。如果有任何未完成的事务在其他会话中运行,ALTER TABLE必须等待它们完成,然后才能开始对该表执行任何操作。这称为元数据锁。任何查询了该表并未提交其事务的会话都可以无限期地阻止ALTER表。是的,看起来您是正确的。我可以插入、更新和选择记录,但在停止任何程序访问数据库之前,我无法更改表。我停止了我的程序并使用:
ALTER TABLE section_configuration DROP FOREIGN KEY FK_animal_index,ADD CONSTRAINT FK_animal_type外键(animal_type)在DELETE SET NULL上引用animal_schedules(animal_type)成功了。非常感谢Karwin先生														

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!