[英]MySQL - Adding Foreign Key To Existing Table
我正在尝试向下表添加外键,因此,当从其父表“帐户”中删除一行时,“线程”中的相应行也将被删除。 我已经使用'messages'表成功完成了此操作,该表是'threads'的子级。
ALTER TABLE `threads` ADD FOREIGN KEY ( `owner_id` )
REFERENCES `social_network`.`accounts` (`id`)
ON DELETE CASCADE
现在,我得到了错误:
#1050 - Table '.\social_network\threads' already exists
这对我来说没有任何意义,因为如果它还不存在,我就不会尝试对其进行“ ALTER TABLE”操作。 更令人困惑的是,此SQL由phpMyAdmin使用内置工具自动生成。
有人可以向我解释导致此错误的原因以及如何解决该错误吗?
我认为您可以采取以下措施:
DROP TABLE IF EXISTS
存在 REPAIR TABLE
此答案是Bruno Casali和Maverick发布的答案的后续。 实际上,我可以通过修理桌子来解决此问题。 InnoDB引擎不支持REPAIR操作,因此我只是重新创建并填充了表:
CREATE TABLE threads_tmp LIKE threads;
INSERT INTO threads_tmp SELECT * FROM threads;
TRUNCATE TABLE threads;
INSERT INTO threads SELECT * FROM threads_tmp;
DROP TABLE threads_tmp;
希望这对遇到同样问题的人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.