MySQL8 批量修改字符集脚本
吾爱主题
阅读:164
2023-03-27 14:03:00
评论:0
从低版本迁移到MySQL 8后,可能由于字符集问题出现 Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) 错误,此时要修改对象的字符集。
1. 批量修改库字符集
change_database_characset.sql
?1 2 3 4 | 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' ); |
调用:
?1 2 | /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
?1 2 3 | 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' ); |
调用:
?1 2 | /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
?1 2 3 4 5 6 7 8 9 10 11 | 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; |
调用:
?1 2 | /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批量修改字符集内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://wxy0327.blog.csdn.net/article/details/128670848
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。