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

标签 mysql foreign-keys

我有一个外键引用子表中的两列。我想删除外键,但 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/

相关文章:

php - Laravel - 如何知道关系表中是否存在该属性

python - 如何在 SQLAlchemy ORM 中选择带有 "as"的查询并连接表

jquery - js 中的 ajax 调用未触发

python - 如何从外键模型填充 Django 中的下拉列表

mysql - 使用第三个参数计算 A-B 和 B-A 对

mysql - 将 Oracle PL/SQL 转换为 Mysql

mysql - 无法添加或更新子行: a foreign key constraint fails - OneToMany

php - 设置外键只显示用户信息

mysql - 多条记录的外键

SQL Does "REFERENCE"自动生成 "FOREIGN KEY"