【问题标题】:MySQL alter table - changing a TINYINT to a SMALLINTMySQL alter table - 将 TINYINT 更改为 SMALLINT
【发布时间】:2012-01-18 07:03:10
【问题描述】:

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

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)

有人知道这里发生了什么吗?

【问题讨论】:

  • 发布show create table table_b 显示的内容。
  • 您应该首先ALTER TABLE TABLE_B DROP FOREIGN KEY Id(其中id 是外键的名称)。
  • 已解决或仍面临错误??

标签: mysql key alter sql-types


【解决方案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)..可能会帮助你..

【讨论】:

  • Fahim - 看看我的“失败尝试”和错误消息。它们与您告诉我运行的查询完全相同。不过,感谢您的输入。 :)
  • 两个表中是否已经有数据??我认为存在大小问题... TINYINT 和 SMALLINT 可以保持值多长时间?
  • 你能执行 describe MYTABLE01, describe MYTABLE02 并告诉我它给出了什么
猜你喜欢
  • 2014-05-16
  • 2015-05-23
  • 2010-12-21
  • 2016-06-01
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
  • 2011-02-28
相关资源
最近更新 更多