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的字符集spa

ALTER DATABASE mydb CHARACTER SET utf8;

 

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

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

#第二步,修改字符集 orm

#若是MySQL实例上有多个数据库须要将字符集改成utf8,咱们能够采起的策略,以下:blog

#2.1 使用 CONCAT函数,相信你们看到如下的语句,应该能知道下一步怎么作了。ci

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

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

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

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

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的库了

大功告成!

相关文章
相关标签/搜索