【发布时间】:2011-02-02 09:26:12
【问题描述】:
我正在将一个网站从 ISO 转换为 UTF-8,所以我也需要转换 MySQL 数据库。
在网上看了各种解决方案,不知道选哪一个。
我真的需要将我的 varchar 列转换为二进制,然后像这样转换为 UTF-8:
ALTER TABLE t MODIFY col BINARY(150);
ALTER TABLE t MODIFY col CHAR(150) CHARACTER SET utf8;
每个数据库的每个列、每个表、每个数据库都需要很长时间。
我有 10 个数据库,每个数据库有 20 个表,大约有 2 - 3 个 varchar 列(每列 2 个查询),这给了我大约 1000 个查询来编写!怎么做?
已解决: 我发布了我使用过的代码:
PASSWORD=""
db=$1
mysqldump --password=$PASSWORD --set-charset --skip-set-charset --add-drop-table --databases "$db" > /home/dev/backup/bdd.sql
QUERY="ALTER DATABASE \`$db\` DEFAULT CHARACTER SET utf8;"
mysql --password=$PASSWORD --database "$db" -e "$QUERY"
mysql --password=$PASSWORD --default-character-set=utf8 < /home/dev/backup/bdd.sql
有关更多信息,请参阅下面的答案。
【问题讨论】:
-
--set-charset和--skip-set-charset不是直接竞争标志吗?文档说它们会影响SET NAMES的使用,但没有设置每个表通过mysqldump输出的DEFAULT CHARSET=X参数。 (mysql 5.5)
标签: mysql utf-8 character-encoding