我有一个外键引用子表中的两列。我想删除外键,但 mySQL 只是挂起并且没有任何反应:
这是 SHOW CREATE TABLE table_name 的输出:
KEY FK_animal_index (animal_type,food_index),
CONSTRAINT FK_animal_index 外键(animal_type,food_index)
引用资料animal_schedules(animal_type,food_index)
ENGINE=InnoDB
我尝试使用以下方法删除此外键:
`ALTER TABLE table_name DROP FOREIGN KEY FK_animal_index;`
`ALTER TABLE table_name DROP FOREIGN KEY animal_type;`
更改表section_configuration删除外键FK_animal_index,
DROP KEY (animal_type, food_index);
并且
更改表section_configuration删除外键
FK_animal_index,删除时添加约束FK_animal_type外键(animal_type)引用
animal_schedules(
animal_type)设置为空;
其他人提到不设置 ON DELETE 会阻止您更改键值(如果 ON DELETE 未设置任何内容,mySQL 将拒绝更改)
但无济于事,mySQL 只是挂起,30 分钟后仍然没有任何结果。目前数据库很小,因此删除 FK 应该很快。
最佳答案
这个问题的答案根本与主键无关。 我必须停止程序访问该表才能对其进行修改。 在mySQL db中,您可以随时添加表和添加列,但如果要更改列或删除列,则该列不能被任何程序使用,否则会无限期挂起。
关于mysql - 如何删除mySQL中引用多列的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51240054/