MySQL alter table生成“重命名时出错”

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

标签: mysql key alter

这是我的错误的印刷品:

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 ,这表明问题可能是由于某些早期alter table错误引起的遗留问题,并建议您在数据目录中窥探并删除任何名称为作为'B-xxx.frm'。

我的错误类似于此,但我的数据目录中没有'#sql2-bcc-16'。无论如何,不​​会有任何先前失败的alter table的工件,因为这只是一个小的测试数据库而且我之前没有实际更改任何表。

编辑:下面有更多信息。

我真正想做的是将另一个表中的Id(主键)更改为SMALLINT(而不是TINYINT)。但是,此电话表的Id是外键,在另一个表中引用Id。因此,我认为在继续主表中的类型更改之前,我需要删除此表的外键。我希望这很清楚。

编辑2:表格。

销售 - 具有Id TINYINT NOT NULL,PRIMARY KEY(Id)

电话 - 具有Id TINYINT NOT NULL,外键(Id)参考销售(Id)

我希望我的数据库中的所有ID都是SMALLINT而不是TINYINT。这是我目前的情况。

1 个答案:

答案 0 :(得分: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