共计 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 行业资讯频道。
正文完