MySQL8 批量修改字符集脚本

目录
  • 1. 批量修改库字符集
  • 2. 批量修改表字符集
  • 3. 批量修改列字符集

从低版本迁移到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批量修改字符集内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何修改MySQL字符集

    一.查看MySQL的字符集 show variables like '%char%'; 二.修改MySQL配置文件 不是安装目录,是数据目录. 我是用sublime打开的. 进去之后,在三个地方增加配置. 第一个: [client] default-character-set=utf8 第二个: [mysql] default-character-set=utf8 第三个: [mysqld] character-set-client-handshake = FALSE character-set

  • MySQL字符集utf8修改为utf8mb4的方法步骤

    对于mysql 5.5 而言,如果不设定字符集,mysql默认的字符集是 latin1 拉丁文字符集: 但随着各种业务的进一步发展,除了各个国家的本身语言字符,经常也会有一些表情符号出现在应用程序中,而在mysql 5.5 之前,UTF-8编码只支持1-3个字节,支持BMP这部分的Unicode编码区:从MySQL 5.5开始,可以支持4个字节UTF编码 utf8mb4 ,一个字符能够支持更多的字符集,也能够支持更多表情符号. utf8mb4兼容utf8,且比utf8能表示更多的字符,是utf8

  • MySQL修改字符集的实战教程

    前言: 在 MySQL 中,系统支持诸多字符集,不同字符集之间也略有区别.目前最常用的字符集应该是 utf8 和 utf8mb4 了,相比于 utf8 ,utf8mb4 支持存储 emoji 表情,使用范围更广.本篇文章将会介绍 utf8 修改成 utf8mb4 字符集的方法. 1. utf8 和 utf8mb4 字符集介绍 字符(Character)是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.字符集(Character set)是多个字符的集合. MySQL 中字符集可

  • mysql通过my.cnf修改默认字符集为utf-8的方法和注意事项

    选项配置 配置文件路径: /full/path/mysql/bin/my.cnf (默认为/etc/my.cnf ) [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=ut

  • MySQL修改默认字符集编码的方法

    今天又遇到修改MySQL默认字符集编码的问题,折腾了半天解决了,赶快记录下来,以后就不用每次折腾了. 查看MySQL字符集的命令是"show variables like '%char%';". 以MySQL5.6为例,默认的字符集为: 在工作中需要将字符集全部修改为utf8. 以下是修改的方法: 1.打开安装目录,默认在"C:\Program Files\MySQL\MySQL Server 5.6", 2.在当前文件夹中复制一份"my-default.

  • mysql修改数据库编码(数据库字符集)和表的字符编码的方法

    mysql将表的字符编码转换成utf-8 复制代码 代码如下: alter table tb_anniversary convert to character set utf8; 修改数据库mysql字符编码为UTF8 步骤1:查看当前的字符编码方法 复制代码 代码如下: mysql> show variables like'character%'; +--------------------------+----------------------------+ |Variable_name 

  • MAC下修改mysql默认字符集为utf8的方法

    1,检查默认安装的mysql的字符集 mysql> show variables like '%char%'; +--------------------------+--------------------------------------------------------+ | Variable_name            | Value                                                  | +---------------------

  • MySQL查看与修改字符集的方法实例教程

    一.查看字符集 1.查看MYSQL数据库服务器和数据库字符集 方法一:show variables like '%character%'; 方法二:show variables like 'collation%'; mysql> show variables like '%character%'; +--------------------------+--------------------------------------+ | Variable_name | Value | +-----

  • MySQL修改默认引擎和字符集详情

    目录 一.数据库引擎 1.1 查看数据库引擎 1.2 修改默认数据库引擎 二.数据库字符集 2.1 查看字符集 2.2 修改字符集 一.数据库引擎 1.1 查看数据库引擎 mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine |

  • 修改mysql默认字符集的两种方法详细解析

    (1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,如 default-character-set = utf8    character_set_server = utf8 修改完后,重启mysql的服务,service mysql restart使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8 复制代码 代码如下: +--------------------------+-----------

随机推荐