因为我用的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要改成自己数据库名称