MySql8.0同步到MySql5.7的解决方案
匿名 · 更新于 2025/5/14
1、修改表的字符集和排序规则
* 作用描述:该查询从 information_schema.TABLES 表中获取指定数据库(your_database)中所有表的名称,并生成一条 SQL 语句,用于将这些表的字符集转换为 utf8mb4 和排序规则设置为 utf8mb4_general_ci。换句话说,它为每个符合条件的表生成一条 ALTER TABLE 语句,以确保表使用新的字符集和排序规则。
SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS sql_statement
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_database'
AND TABLE_COLLATION = 'utf8mb4_0900_ai_ci';
2、修改列的排序规则
* 作用描述:该查询从 information_schema.COLUMNS 表中获取指定数据库(your_database)中所有列的名称和数据类型,并生成一条 SQL 语句,用于修改这些列的排序规则为 utf8mb4_general_ci。它为每个符合条件的列生成一条 ALTER TABLE 语句,以确保列使用新的排序规则。
SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' MODIFY ', COLUMN_NAME, ' ', COLUMN_TYPE, ' COLLATE utf8mb4_general_ci;') AS sql_statement
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'your_database'
AND COLLATION_NAME = 'utf8mb4_0900_ai_ci';
