MySQL数据库8.0导入到MySQL5.7报错原因解决

106 阅读1分钟

因为我用的MySQL8.0,同事导入我的数据库备份报错,发现是因为数据库版本的原因导致报错

1.Mysql8.0的字符集和排序规则较5.7有改动

表编码为 utf8mb4_0900_ai_ci

排序规则为utf8mb4

utf8mb4替换为utf8

因此打开.sql文件 使用notpad++等软件去全局替换:

utf8mb4_0900_ai_ci 替换为 utf8_general_ci

utf8_croatian_ci替换为utf8_general_ci

utf8mb4_general_ci替换为utf8_general_ci

utf8mb4 替换为 utf8、 因为项目要求vachar类型要改成utf8mb4 排序规则是utf8mb4_general_ci

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), ';')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'dataname'
AND DATA_TYPE = 'varchar'
AND
(
    CHARACTER_SET_NAME != 'utf8'
    OR
    COLLATION_NAME != 'utf8_unicode_ci'
);


dataname要改成自己数据库名称