我正在将一个网站从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
请参见下面的回答获取更多信息。