MySQL8 批量修改字符集脚本
作者:wzy0623 发布时间:2024-01-16 12:50:34
标签: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
来源:https://wxy0327.blog.csdn.net/article/details/128670848
0
投稿
猜你喜欢
- 蚊子今天下午搭了一主三从的mysql复制,结果所有服务器都配置好后,发现从上报如下的错误 Last_IO_Error: Fatal erro
- K-means(K均值)算法是最简单的一种聚类算法,它期望最小化平方误差注:为避免运行时间过长,通常设置一个最大运行轮数或最小调整幅度阈值,
- 前言Javascript闭包在学习过程中一般较难理解,本文从什么是闭包,常见闭包示例,闭包作用,闭包应用及闭包问题等方面来介绍闭包,希望能给
- 在PyQt中没有直接提供左键双击的判断方法,需要自己实现,其思路主要如下所示:1、起动一个定时器,判断在指定的时间之内,点击次数
- XMLHttpRequest 最近在 W3C 标准之路上又迈进了一步,W3C Web API&nbs
- 一、原理概述v-for指令时在模板编译的代码生成阶段实现的,当遍历数组或对象时需要使用列表渲染指令v-for。当Vue.js用v-for正在
- 简介Appium 是一个开源的自动化测试工具,支持 Android、iOS 平台上的原生应用,支持 Java、Python、PHP 等多种语
- 输入命令jupyter notebook --generate-config可以看到此时Jupyter Notebook的默认目录找到对应路
- 1.pickle 写: 以写方式打开一个文件描述符,调用pickle.dump把对象写进去 &
- 前言本人是位大二在读在校学生,专业为地理信息科学,因跟老师一起做项目,所以有幸接触nc数据转换为tif数据,因为在这件事情上也遇过不少坑,也
- 本文主要是对leveldb进行一个简单的介绍及使用Python语言对其进行操作的代码示例,具体如下。leveldb 是google实现的一种
- 可以使用numpy中的linspace函数np.linspace(start, stop, num, endpoint, retstep,
- 我就废话不多说了,大家还是直接看代码吧~#文件复制import ossrc_path=r'E:\Pycharm\python100题
- 目录普通分页查询如何优化偏移量大采用id限定方式优化数据量大问题普通分页查询当我们在日常工作中遇到大数据查询的时候,第一反应就是使用分页查询
- 先说说问题起因:测试同学在自己电脑上测试不同的后台,但数据库使用的是相同的名称。于是创建了新的SQL Server实例,而新实例需要指定不同
- 在查找数据集的时候发现,并不是所有的数据集都是以csv的格式存储,也就是每一列特征数据的分割并不是都以逗号分割,有的数据格式是以空格为分割例
- 目录一、运行效果二、实现方法1. 爬虫部分2.Tkinter部分三、打包四、代码获取今天咱们用Python爬虫和Tkinter界面来做一个翻
- 本文实例讲述了python解析xml文件操作的实现方法。分享给大家供大家参考。具体方法如下:xml文件内容如下:<?xml versi
- 模块化分页1.查询语句块<% 取得当前文件名 temp = Split(request.ServerV
- Insus.NET解决这个问题,只有创建另外一个表,将存储用户决定要跟踪的表,以及这个表中需要跟踪的字段。 还要创建另外一个表[Audit]