2012-01-18 18 views
3

這是我的錯誤的打印:MySQL的改變表生成「上的重命名錯誤」

mysql> ALTER TABLE Price DROP FOREIGN KEY Id 
ERROR 1025 (HY000): Error on rename of '.\testdb\Price' to '.\t 
estdb\#sql2-bcc-16' (errno: 152) 

我讀過this page這表明該問題可能是由於遺留的表從一些早期的改變表錯誤,並建議您在數據目錄中窺探並刪除任何名稱爲「B-xxx.frm」的表。

我的錯誤與此類似,但在我的數據目錄中沒有'#sql2-bcc-16'。而且不會有任何先前失敗的alter table的工件,無論如何,因爲這只是一個小的測試數據庫,而且我之前沒有真正更改過任何表。

編輯:下面更多信息。

我真正想要做的是將另一個表中的Id(主鍵)更改爲SMALLINT(而不是TINYINT)。但是,此Phone表的Id是一個外鍵,在另一個表中引用Id。所以,我相信我需要在繼續進行主表中的類型更改之前刪除此表的外鍵。我希望這很清楚。

編輯2:表。

出售 - 有標識TINYINT NOT NULL,PRIMARY KEY(Id)的

電話 - 有標識TINYINT NOT NULL,外鍵(Id)的參考單位(Id)的

我想所有的IDS在我數據庫爲SMALLINT而不是TINYINT。這是我目前的情況。

+0

帖子的頂部不斷消失。它說「大家好,...」有人命名爲'thinksteep'不斷編輯我的帖子。 – MitchellSalad 2012-01-18 06:05:40

+0

我相信Id是另一張表的主鍵......對嗎? – 2012-01-18 06:07:14

+0

Fahim - 正確!我會用更多的相關信息更新OP。 – MitchellSalad 2012-01-18 06:12:16

回答

1

嘗試用mysql> ALTER TABLE Price DROP Id

希望工程......好運

我試圖與您查詢mysql> ALTER TABLE Price DROP FOREIGN KEY Id

它執行,但沒有工作!

更新:下面的查詢

使用...

mysql> ALTER TABLE Price MODIFY Id SMALLINT

mysql> ALTER TABLE Sale MODIFY Id SMALLINT

mysql> ALTER TABLE Phone MODIFY Id SMALLINT

+0

我仍然希望電話有一個Id字段,我只需要暫時放棄Id是一個事實外鍵。如果我刪除整列,那麼修改主表之後將無法「重新連接」Ids,對嗎? – MitchellSalad 2012-01-18 06:19:16

+0

是... 我的下一個問題:爲什麼你要暫時放下然後?你到底想做什麼?請編輯您的問題 – 2012-01-18 06:20:53

+0

另外上面的查詢將刪除價格表中的Id列...我相信Phone是另一個表,其中Id是主鍵... 你能提供兩個表的結構嗎? – 2012-01-18 06:22:45