MySQL8 批量修改字符集脚本

 更新时间:2023年03月24日 10:44:47   作者:wzy0623  
本文主要介绍了MySQL8 批量修改字符集脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

从低版本迁移到MySQL 8后,可能由于字符集问题出现 Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) 错误,此时要修改对象的字符集。

1. 批量修改库字符集

change_database_characset.sql

select concat('alter database ',schema_name,' default character set utf8mb4 collate utf8mb4_0900_ai_ci;') 
  from information_schema.schemata 
 where schema_name not in ('sys','mysql','performance_schema','information_schema') 
   and lower(default_collation_name) in ('utf8mb4_general_ci','utf8_general_ci');

调用:

/home/mysql/mysql-8.0.16-linux-glibc2.12-x86_64/bin/mysql -uroot -h10.0.0.18 -P3306 -p70n6w+1XklMu -N < change_database_characset.sql > change_database_characset_result.sql
/home/mysql/mysql-8.0.16-linux-glibc2.12-x86_64/bin/mysql -uroot -h10.0.0.18 -P3306 -p70n6w+1XklMu -f < change_database_characset_result.sql > change_database_characset_result.out 2>&1

2. 批量修改表字符集

change_table_characset.sql

select concat('alter table ',table_schema,'.',table_name,' default character set utf8mb4 collate = utf8mb4_0900_ai_ci;') 
  from information_schema.tables where table_schema not in ('sys','mysql','performance_schema','information_schema') 
   and table_type='BASE TABLE' and lower(table_collation) in ('utf8mb4_general_ci','utf8_general_ci');

调用:

/home/mysql/mysql-8.0.16-linux-glibc2.12-x86_64/bin/mysql -uroot -h10.0.0.18 -P3306 -p70n6w+1XklMu -N < change_table_characset.sql > change_table_characset_result.sql
/home/mysql/mysql-8.0.16-linux-glibc2.12-x86_64/bin/mysql -uroot -h10.0.0.18 -P3306 -p70n6w+1XklMu -f < change_table_characset_result.sql > change_table_characset_result.out 2>&1

3. 批量修改列字符集

change_column_characset.sql

set group_concat_max_len=10240;
 
select concat(c1,c2,';') 
  from (select c1, group_concat(c2) c2
          from (select concat('alter table ',t1.table_schema,'.',t1.table_name) c1,concat(' modify ','`',t1.column_name,'` ',t1.data_type,
                              if (t1.data_type in ('varchar','char'),concat('(',t1.character_maximum_length,')'),''),
                              ' character set utf8mb4 collate utf8mb4_0900_ai_ci',if(t1.is_nullable='NO',' not null',' null'),' comment ','''',t1.column_comment,'''') c2
                  from information_schema.columns t1, information_schema.tables t2
                 where t1.table_schema=t2.table_schema and t1.table_name=t2.table_name and t2.table_type='BASE TABLE' 
                   and lower(t1.collation_name) in ('utf8mb4_general_ci','utf8_general_ci') and t1.table_schema not in ('sys','mysql','performance_schema','information_schema')) t1
         group by c1) t;

调用:

/home/mysql/mysql-8.0.16-linux-glibc2.12-x86_64/bin/mysql -uroot -h10.0.0.18 -P3306 -p70n6w+1XklMu -N < change_column_characset.sql > change_column_characset_result.sql
/home/mysql/mysql-8.0.16-linux-glibc2.12-x86_64/bin/mysql -uroot -h10.0.0.18 -P3306 -p70n6w+1XklMu -f < change_column_characset_result.sql > change_column_characset_result.out 2>&1

到此这篇关于MySQL8 批量修改字符集脚本的文章就介绍到这了,更多相关MySQL8批量修改字符集内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 怎样设置才能允许外网访问MySQL

    怎样设置才能允许外网访问MySQL

    大多数情况下,mysql数据库只要本机访问就可以了,这样的话,默认安装就OK,但是如果需要外网访问mysql数据库的话,应该如何操作呢,想知道的话,就好好看看下面的介绍吧
    2014-08-08
  • 从零开始学习SQL查询语句执行顺序

    从零开始学习SQL查询语句执行顺序

    sql语言中的查询的执行顺序,以前不是很了解,最近查阅了相关资料,在sql语言中,第一个被处理的字句总是from字句,最后执行的limit操作,现在小编来和大家一起学习一下
    2019-05-05
  • ubuntu kylin 14.10下多个mysql 5.7.14安装教程

    ubuntu kylin 14.10下多个mysql 5.7.14安装教程

    这篇文章主要为大家分享了ubuntu kylin 14.10下多个mysql 5.7.14安装教程,感兴趣的朋友可以参考一下
    2016-08-08
  • 如何使用MySQL查询某个列中相同值的数量统计

    如何使用MySQL查询某个列中相同值的数量统计

    这篇文章的主要内容是通过MySQL查询某个列中相同值的数量统计,文章简洁明了,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-07-07
  • mysql视图之管理视图实例详解【增删改查操作】

    mysql视图之管理视图实例详解【增删改查操作】

    这篇文章主要介绍了mysql视图之管理视图,结合实例形式详细分析了mysql视图增删改查操作具体实现技巧与相关操作注意事项,需要的朋友可以参考下
    2019-12-12
  • MySQL基础教程之事务异常情况

    MySQL基础教程之事务异常情况

    事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行,下面这篇文章主要给大家介绍了关于MySQL基础教程之事务异常情况的相关资料,需要的朋友可以参考下
    2022-10-10
  • MySQL利用profile分析慢sql详解(group left join效率高于子查询)

    MySQL利用profile分析慢sql详解(group left join效率高于子查询)

    最近因为一个用了子查询的sql语句查询很慢,严重影响了性能,所以需要进行优化,下面这篇文章主要跟大家介绍了关于MySQL利用profile分析慢sql的相关资料,文中介绍的非常详细,需要的朋友们可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • Mysql的增删改查语句简单实现

    Mysql的增删改查语句简单实现

    这篇文章主要介绍了Mysql的增删改查语句简单实现的相关资料,需要的朋友可以参考下
    2017-04-04
  • mysql触发器之触发器的增删改查操作示例

    mysql触发器之触发器的增删改查操作示例

    这篇文章主要介绍了mysql触发器之触发器的增删改查操作,结合实例形式分析了mysql触发器的定义及使用触发器进行增删改查等相关操作技巧,需要的朋友可以参考下
    2019-12-12
  • MySQL关于sql_mode解析与设置讲解

    MySQL关于sql_mode解析与设置讲解

    今天小编就为大家分享一篇关于MySQL关于sql_mode解析与设置讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论