gpt4 book ai didi

mysql - 删除外键 MySQL 不存在

转载 作者:行者123 更新时间:2023-11-29 02:40:39 25 4
gpt4 key购买 nike

我在 MySQL 中有一个这样的表(这是使用 show create table user_org_contacts 返回的):

CREATE TABLE `user_org_contacts` (
`user_org_contacts_id` int(11) NOT NULL AUTO_INCREMENT,
`from_user_id` int(11) DEFAULT NULL,
`to_org_user_id` int(11) DEFAULT NULL,
`suggested_vacancy_id` int(11) DEFAULT NULL,
`contact_date` datetime NOT NULL,
`message` text,
PRIMARY KEY (`user_org_contacts_id`),
KEY `FK_Reference_53` (`from_user_id`),
KEY `FK_Reference_54` (`to_org_user_id`),
KEY `FK_Reference_55` (`suggested_vacancy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=latin1

我注意到我的 FK_Reference_54 是错误的,指向了错误的表。所以我想通过正确的 FK 更改这个。

这是我尝试过的:

ALTER TABLE `user_org_contacts` 
DROP FOREIGN KEY `FK_Reference_54`;

ALTER TABLE `user_org_contacts`
ADD CONSTRAINT `FK_Reference_54`
FOREIGN KEY (`to_org_user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE;

这会产生以下错误:

1091 - Can't DROP 'FK_Reference_54'; check that column/key exists

最佳答案

问题是您将索引与主键混淆了。

关键字 KEY 实际上是在向您显示索引,而主键使用关键字 CONSTRAINT ... FOREIGN KEY ...

例子:

CONSTRAINT `FK_name` FOREIGN KEY (`current_field_name`)
REFERENCES `external_table_name` (`external_field_name`) ON DELETE CASCADE ON UPDATE CASCADE

所以在你的情况下,如果你想删除你的索引,你只需要调用这个查询

ALTER TABLE `user_org_contacts` 
DROP INDEX `FK_Reference_54`;

下次我建议你使用一些 mysql 的 UI,比如 mysql workbench,这样你会立即注意到这个问题。

关于mysql - 删除外键 MySQL 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52836851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com