Mysql列重命名错误150

标签 mysql character-encoding alter-table

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

有人知道如何解决这个问题吗?

最佳答案

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

关于Mysql列重命名错误150,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12673629/

相关文章:

PHP包含html页面字符集问题

sql-server-2005 - 在 SQL Server 事务中更改表

php - 当用户在 mysql 中提交数据时,如何使用 Ajax 和 PHP 获取通知?

php - 在多个 foreach 循环表中添加 if else 语句

mysql - 如何在Mysql中选择存储过程的某些列

mysql - 是否有更优雅或至少更 DRY 的方式来编写这一系列的 SQL IF?

c# - Base64 解码带有 ISO-8859-1 字符集的字符串并将其保存到 NSData

mysql - 在 MySQL 中,是否有一种以编程方式在更改列的编码/排序规则之前检查数据完整性的方法?

mysql - 更改表默认字符集修改MySQL 5.6中的行

mysql - 使用不同的定义重建 Hive 表