列重命名时出现Mysql错误150

时间:2012-10-01 12:50:26

标签: mysql character-encoding alter-table

我有一个旧的数据库,其中包含列' charset到latin1

现在我试图在utf8中更改整个数据库,我已经制作了一个脚本来更改utf8中的所有表格,如下所示:

ALTER TABLE `mytable` CHARACTER SET utf8;

和所有列如下:

ALTER TABLE `mytable` CHANGE `mycolumn` `mycolumn` varchar(200) CHARACTER SET utf8;

但在某些专栏(主键和约束,我猜)我收到此错误:

Error on rename of './test/#sql-5028_217b96' to './test/mytable' (errno: 150)

任何人都知道怎么解决这个问题?

1 个答案:

答案 0 :(得分:9)

您的mycolumn最有可能是外键的一部分。如果是这样,您必须删除约束,然后更改主/外键的类型,然后再次添加约束。