MySQL8批量修改字符集脚本怎么写

60次阅读
没有评论

共计 2840 个字符,预计需要花费 8 分钟才能阅读完成。

这篇“MySQL8 批量修改字符集脚本怎么写”文章的知识点大部分人都不太理解,所以丸趣 TV 小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“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 -h20.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 -h20.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 -h20.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 -h20.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 -h20.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 -h20.0.0.18 -P3306 -p70n6w+1XklMu -f   change_column_characset_result.sql   change_column_characset_result.out 2 1

以上就是关于“MySQL8 批量修改字符集脚本怎么写”这篇文章的内容,相信大家都有了一定的了解,希望丸趣 TV 小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-13发表,共计2840字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)