[英]Cannot drop a mysql table
我收到一個奇怪的錯誤。 我有一桌animals
,我想放下。 由於外鍵約束失敗,我無法刪除表。 我知道在放下桌子之前我必須丟棄外鍵。 問題是這個表沒有外鍵。 我已經放棄了它們。 SQLyog反映他們已被刪除。 但我仍然可以在info架構中找到它們。 好像我把鑰匙掉了一半或者別的東西。
如何在不丟棄數據庫的情況下刪除此表? 我需要重新調整此表,我只想刪除它並重新創建它。
編輯:這是來自SQL的錯誤消息:
Cannot delete or update a parent row: a foreign key constraint fails
你的餐桌animals
是否有外鍵並不重要。 如果有外鍵,你可以放棄桌子。
重要的是,還有其他表用外鍵引用animals
。
以下是您可以檢查的方法:
SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE (REFERENCED_TABLE_SCHEMA, REFERENCED_TABLE_NAME) = ('mydatabase', 'animals');
你的評論:
我從來沒有聽說過外鍵不可見但仍然阻止表被丟棄的情況。 但我想這是可能的。
如果你這樣做,你可以放棄你的表:
mysql> SET FOREIGN_KEY_CHECKS=0;
mysql> DROP TABLE animals;
mysql> SET FOREIGN_KEY_CHECKS=1;
但是,如果InnoDB表空間已處於奇怪狀態,我無法預測可能出現的問題。
最后,你可能需要做的就是使用mysqldump轉儲所有 InnoDB表,然后關閉MySQL守護進程,刪除InnoDB表空間文件,然后重新啟動並重新導入轉儲的數據。 這將消除表空間損壞的任何可能性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.