批量修改数据库的排序类型,比如,由于MYSQL5.7不支持utf8mb4_0900_ai_ci
排序规则,当把MYSQL8.0以上的数据迁移到MYSQL5.7的库的时候,需要批量把数据库所有的 utf8mb4_0900_ai_ci
排序类型修改为 utf8mb4_general_ci
1.生成批量修改数据库表的排序规则的SQL
SELECT
TABLE_NAME,
TABLE_COLLATION,
CONCAT( 'ALTER TABLE ', TABLE_NAME, ' ENGINE = InnoDB, COLLATE = utf8mb4_general_ci', ';')
FROM
information_schema.`TABLES`
WHERE
-- -过滤正确排序规则
TABLE_COLLATION != 'utf8mb4_general_ci'
-- -数据库名称
AND TABLE_SCHEMA = '你的数据库名';
2.生成批量修改字段排序规则的SQL
SELECT
TABLE_SCHEMA '数据库',
TABLE_NAME '表',
COLUMN_NAME '字段',
CHARACTER_SET_NAME '原字符集',
COLLATION_NAME '原排序规则',
CONCAT(
'ALTER TABLE ',
TABLE_NAME,
' MODIFY COLUMN ',
COLUMN_NAME,
' ',
COLUMN_TYPE,
-- - 设置新的编码和排序规则
' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci',
( CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END ),
( CASE WHEN COLUMN_COMMENT = '' THEN ' ' ELSE concat( ' COMMENT''', COLUMN_COMMENT, '''' ) END ),
';'
) '修正SQL'
FROM
information_schema.`COLUMNS`
WHERE
-- -过滤正确排序规则
COLLATION_NAME != 'utf8mb4_general_ci'
-- -数据库名称
AND TABLE_SCHEMA = '你的数据库名';