2010-10-12 94 views
2

我無法刪除索引的列。我真的不明白髮生了什麼,因爲我通常沒有問題刪除索引。 當我試圖刪除我收到以下錯誤無法刪除索引列,ERROR 1025(HY000):重命名時出錯.. to ..(errno:150)

ERROR 1025 (HY000): Error on rename of './db-name/#sql-135e_9ee6d2' to './db-name/table-name' (errno: 150) 

列或索引如果我創建在同一列上一個新的索引,我可以刪除舊的索引,但不是新的(我猜它只是檢查是否索引是可用的)。 你有沒有遇到過這個問題的傢伙?如果有的話,我有什麼建議可以解決這個問題?

引擎:InnoDB的 MySQL的版本:版本14.12 5.0.45 DISTRIB,使用readline的5.0

感謝您的幫助紅帽Linux的GNU的(x86_64的),如果您需要任何更多信息,請讓我知道。

回答

2

您在該索引上有一個外鍵關係,因此InnoDB可以防止刪除該列以保持一致性。首先刪除引用該列的所有外鍵。

發生這種情況是因爲ALTER TABLE通過製作表的副本真正起作用,然後重命名以將舊錶移出並將新表移動到其位置。它當然是我在MySQL中看到的不太有意義的錯誤消息之一。

http://www.xaprb.com/blog/2006/08/22/mysqls-error-1025-explained/

+0

你完全正確。我以爲我已經做到了,但無論是由於我的監督還是phpMyAdmin的配合,它仍然存在。謝謝。 – luxerama 2010-10-12 14:48:52

+0

只需添加到@Tatu答案。首先運行這個命令'ALTER TABLE table_name DROP FOREIGN KEY foreign_key_name;'然後運行命令'ALTER TABLE table_name DROP PRIMARY KEY' – 2012-07-14 13:24:29

2

這是一個外鍵引用錯誤...

您可以用下面的語句檢查,看看錶

SHOW ENGINE INNODB STATUS

相關問題