[英]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.