mysql库的字符集和排序规则排序后对于已有的表不生效,只对新创建的表生效;
修改表的字符集和排序规则可以对字段生效。所以,只需要找出当前库所有的表,迭代修改表的即可解决问题。库的单独修改。
# 1、修改库database_name的字符集为utf8mb4,排序规则为utf8mb4_general_ci ### 连接mysql后,不用选择库,把database_name替换成目标库名字,直接执行这一句脚本。 ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # 2、创建批量修改表字符集和排序规则的存储过程 ### 替换database_name为要执行的库,执行以下脚本 ### 表的字符集修改utf8mb4,排序规则为utf8mb4_general_ci use database database_name; DROP PROCEDURE IF EXISTS UP_CHANGE_UTF8MB4; DELIMITER $$ CREATE PROCEDURE UP_CHANGE_UTF8MB4() COMMENT '将当前数据库中所有表的字符集和排序规则' BEGIN DECLARE $i INT; DECLARE $cnt INT; DECLARE $NAME VARCHAR(64); #创建临时表,代替游标 DROP TABLE IF EXISTS tmp_Table_name; CREATE TEMPORARY TABLE tmp_Table_name ( id INT NOT NULL AUTO_INCREMENT, table_name VARCHAR(64) NOT NULL, PRIMARY KEY (`id`) );