簡體   English   中英

無法刪除mysql表

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM