取生成修改sql重新运行进行修改即可 一、问题 二、修改字符集 三、修改库字符集和排序规则 四、修改表和字段字符集以及排序规则 1、查询并生成修改语句 2、生成简洁的修改表以及字段字符集和排序规则的语句 一、问题 由于建库建表指定的数据库字符集和排序规则,和应用需求不一致,导致系统因字符集不一致异常。 二、修改字符集 该生产库使用MySQL8.0版本,使用的默认字符集为:utf8mb4 ;使用的排序规则是: utf8mb4_0900_ai_ci。 通过测试验证和评估,需要修改该生产库库、表和字段的排序规则为utf8mb4_general_ci和自字符集为utf8mb4。 查看库、表以及字段的字符集和排序规则命令 -- 查看库、表以及字段的字符集和排序规则命令 -- 方法一 -- 1、查看指定库排序规则和字符集 show create database '库名字'; -- 2、查看指定表以及排序规则和字符集 show create table '表明字'; -- 方法二 select * from information_schema.`TABLES` where TABLE_SCHEMA='库名字' and tables='表名字' select * from information_schema.`COLUMNS` where TABLE_SCHEMA='库名字' and tables='表名字' 三、修改库字符集和排序规则 -- 修改库的排序规则和字符集 ALTER database '库名' DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; 四、修改表和字段字符集以及排序规则 1、查询并生成修改语句 -- 1、查看需要修改字符集和排序规则的表 SELECT TABLE_SCHEMA AS '数据库', TABLE_NAME AS '表', TABLE_COLLATION AS '原排序规则', CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS '修正SQL' FROM information_schema.`TABLES` WHERE TABLE_COLLATION ='utf8mb4_0900_ai_ci' AND TABLE_SCHEMA = '库名字'; -- 2、查看需要修改字符集和排序规则的字段 SELECT TABLE_SCHEMA AS '数据库', TABLE_NAME AS '表', COLUMN_NAME AS '字段', CHARACTER_SET_NAME AS '原字符集', COLLATION_NAME AS '原排序规则', CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS '修正SQL' FROM information_schema.`COLUMNS` WHERE CHARACTER_SET_NAME = 'utf8mb4' AND COLLATION_NAME != 'utf8mb4_general_ci' AND TABLE_SCHEMA = '库名字'; 2、生成简洁的修改表以及字段字符集和排序规则的语句 -- 1、生成修改表 的字符集和排序规则的SQL语句 SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS '修正SQL' FROM information_schema.`TABLES` WHERE TABLE_COLLATION ='utf8mb4_0900_ai_ci' AND TABLE_SCHEMA = '库名字'; -- 2、生成修改字段 的字符集和排序规则的SQL语句 SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS '修正SQL' FROM information_schema.`COLUMNS` WHERE CHARACTER_SET_NAME = 'utf8mb4' AND COLLATION_NAME != 'utf8mb4_general_ci' AND TABLE_SCHEMA = '库名字'; ———————————————— 版权声明:本文为CSDN博主「@土豆」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 |
|