MySQL alter table - 将TINYINT更改为SMALLINT

时间:2012-01-18 07:03:11

标签: mysql key alter sql-types

我有两个表的以下数据库(原谅我丑陋的格式):

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)

有谁知道这里发生了什么?

1 个答案:

答案 0 :(得分:1)

使用以下查询

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) ..可以帮助你..