MySQL批量修改数据库的字符集

Posted 青云Luck

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL批量修改数据库的字符集相关的知识,希望对你有一定的参考价值。

 

#走过,试过的路

UPDATE information_schema.`SCHEMATA` SET  DEFAULT_COLLATION_NAME=‘utf8_general_ci‘  WHERE DEFAULT_COLLATION_NAME<>‘utf8_general_ci‘;

#————尝试使用update语句来修改,这是走不通的,报以下错误 没有权限。

#错误代码: 1044
#Access denied for user ‘root‘@‘%‘ to database ‘information_schema‘

#经过度娘查找资料,需要使用alter语句才可以修改DB的字符集

ALTER DATABASE mydb CHARACTER SET utf8;

 

#第一步,找出mysql实例中字符集不是utf8的数据库

SELECT * FROM information_schema.`SCHEMATA` WHERE DEFAULT_COLLATION_NAME<>utf8_general_ci;

#第二步,修改字符集 

#如果MySQL实例上有多个数据库需要将字符集改为utf8,我们可以采取的策略,如下:

#2.1 使用 CONCAT函数,相信大家看到以下的语句,应该能知道下一步怎么做了。

SELECT *,CONCAT( ALTER DATABASE ,schema_name, CHARACTER SET utf8;)strSql FROM information_schema.`SCHEMATA` WHERE DEFAULT_COLLATION_NAME<>utf8_general_ci;

#2.2 复制出上一个select的结果,粘贴,最后执行

ALTER DATABASE 3_11_测试数据库1 CHARACTER SET utf8;
ALTER DATABASE 3_3_testddb CHARACTER SET utf8;
ALTER DATABASE 410_3_test CHARACTER SET utf8;
…………

#第三步,检查验证是否修改成功

SELECT * FROM information_schema.`SCHEMATA` WHERE DEFAULT_COLLATION_NAME<>utf8_general_ci;

#<r>查询:SELECT * FROM information_schema.`SCHEMATA` WHERE DEFAULT_COLLATION_NAME<>‘utf8_general_ci‘ LIMIT 0, 1000
#返回了 0 行

#结果表明,已经没有字符集不是utf8的库了

大功告成!

以上是关于MySQL批量修改数据库的字符集的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 8 批量修改字符集脚本

MySQL 8 批量修改字符集脚本

sql 批量修改,,mysql数据库某表内特定字符后40位后面添加添加特定内容怎样实现。

如何批量修改mysql数据库表的字段类型

批量更改mysql字符集

批量更改mysql字符集