5

我有一个旧数据库,其列字符集为 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)

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

4

1 回答 1

9

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

于 2012-10-01T12:56:45.290 回答