2012-01-18 110 views
0

我有兩個表(請原諒我的醜格式)以下數據庫:MySQL的改變表 - 更改TINYINT到SMALLINT

TABLE_A : Id TINYINT, PRIMARY KEY (Id) 
TABLE_B : Id TINYINT, FOREIGN KEY (Id) REFERENCES TABLE_A (Id) 

我想修改ID,以便它是一個SMALLINT而不是TINYINT 。這裏有幾次失敗的嘗試:

mysql> ALTER TABLE TABLE_A MODIFY Id SMALLINT 
ERROR 1025 (HY000): Error on rename of '.\testdb\#sql-bcc_16' to '.\testdb\table_a' (errno: 150) 

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

有沒有人知道這是怎麼回事?下面

+0

後什麼'展示創建表table_b'節目。 – 2012-01-18 07:15:33

+0

您應該首先'ALTER TABLE TABLE_B DROP FOREIGN KEY ID'(其中'id'是外鍵的名稱)。 – 2012-01-18 07:17:24

+0

查看我的更新回答 – 2012-01-18 07:34:03

回答

0

使用查詢

mysql> ALTER TABLE Price MODIFY Id SMALLINT

mysql> ALTER TABLE Sale MODIFY Id SMALLINT

mysql> ALTER TABLE Phone MODIFY Id SMALLINT

我也回答了在 MySQL alter table generating "error on rename"很長一段時間回來......但你不回答有...

在你的情況下,這將是

mysql> ALTER TABLE TABLE_A MODIFY Id SMALLINT

mysql> ALTER TABLE TABLE_B MODIFY Id SMALLINT

更新

檢查Help with: ERROR 1025 (HY000): Error on rename of .... (errno: 150) ..可以幫助你..

+0

Fahim - 看看我的「失敗的嘗試」和錯誤消息。他們與您告訴我要運行的完全相同的查詢。感謝您的意見,但。 :) – MitchellSalad 2012-01-18 07:13:14

+0

我試着在我的目標和完美運行... – 2012-01-18 07:16:11

+0

嗯......其他部隊在這裏工作,然後... – MitchellSalad 2012-01-18 07:17:39