MySql批量修改表排序规则

首先是使用sql生成目标sql语句

修改表排序规则

SELECT
    CONCAT( 'ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' COLLATE=utf8mb4_general_ci;' ) 'sql' 
FROM
    information_schema.`TABLES` 
WHERE
    table_schema = 'target_db'

 

修改表字段排序规则

SELECT
    CONCAT(
        'alter table `',
        table_name,
        '` modify `',
        column_name,
        '` ',
        data_type,
        '(',
        character_maximum_length,
        ') character set utf8mb4 collate utf8mb4_general_ci',
        ( CASE WHEN is_nullable = 'no' THEN ' not null' ELSE '' END ),
        ( CASE WHEN IFNULL( column_comment, '' ) = '' THEN '' ELSE CONCAT ( ' comment \'', column_comment, '\'' ) END ),
        ';' 
) AS `sql` 
FROM
    information_schema.`COLUMNS` 
WHERE
    table_schema = 'target_db'

将结果复制出来执行即可

注意: 如果表有外键会导致执行失败, 这里可以先删除外键修改完再重建外键关系

 

其他资料:

utf8mb4_0900_ai_ci在MysqL5中是没有的 

 

 

 

排序规则命名意义

排序规则名字格式: 字符集_排序规则_后缀

如: utf8_general_ci

后缀意义:

  • _ci:不区分大小写,Case-insensitive的缩写
  • _cs:区分大小写,Case-sensitive的缩写
  • _ai:不区分轻重音,Accent-insensitive的缩写
  • _as:区分重音,Accent-sensitive的缩写
  • _bin:二进制

 

相关文章

MySQL 死锁 是指两个或多个事务互相等待对方持有的锁,从而导...
在MySQL中,InnoDB引擎通过Next-Key Locking技术来解决幻读问...
在数据库事务管理中,Undo Log 和 Redo Log 是两种关键日志,...
case when概述 sql语句中的case语句与高级语言中的switch语句...
其实很简单,只是为了忘记,做个记录,用的时候方便。 不管是...
1.进入服务,找到mysql服务,在属性里找到mysql的安装路径 2...