如何一次性将排序规则更改为utf8_bin?

10

我已经把所有数据库表的排序规则设置为latin1_swedish_ci,但现在我意识到应该使用utf8_binutf8_general_ci

我该如何一次性更改表格的排序规则为utf8_binutf8_general_ci?我可以使用查询或其他方法吗?

4个回答

29

您只需要对每个表运行以下ALTER语句:

ALTER TABLE <table name> COLLATE utf8_general_ci;

如果您还需要更新现有的字符编码(听起来不太可能),您可以使用:

ALTER TABLE <table name> CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

10

你也可以使用以下代码更新数据库字符集:

ALTER DATABASE  `DATABASE_NAME` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

做这个似乎已经在模式中的所有表上设置了排序规则。谢谢。 - cbeaudin

0

您可以使用ALTER TABLE更改表的排序规则:

alter table table_name collate=utf8_general_ci;

0

这里有两种方法。第一种对我有效。从终端执行(记得先备份)。

mysql --database=dbname -B -N -e "SHOW TABLES"  | awk '{print "ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;"}' | mysql --database=dbname &

来源:Commandlineinfu.com

从MySQL中,您将需要使用Concat命令

SELECT CONCAT('ALTER TABLE `', tbl.`TABLE_SCHEMA`, '`.`', tbl.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') FROM `information_schema`.`TABLES` tbl WHERE tbl.`TABLE_SCHEMA` = 'dbname'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接