«

mysql8.0导数时表字符集的的COLLATE总是utf8mb4_0900_ai_ci

时间:2024-2-21 13:25     作者:韩俊     分类: Mysql


数据库字符集环境:

mysql8.0导数时表字符集的的COLLATE总是utf8mb4_0900_ai_ci

字符集是utf8mb4

mysql8.0导数时表字符集的的COLLATE总是utf8mb4_0900_ai_ci

数据库的collation都是uft8mb4_general_ci

在数据库t_col下面创建一张表:

mysql8.0导数时表字符集的的COLLATE总是utf8mb4_0900_ai_ci

新创建的表的字符集是uft8mb4,collate是uft8mb4_general_ci符合配置设置

接下来生成一个source 文件用来导表结构:

DROP TABLE IF EXISTS `t1`;
CREATE TABLE `t1` ( `FIN_ACCOUNT_ID` varchar(60) NOT NULL COMMENT '账户编号') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

mysql8.0导数时表字符集的的COLLATE总是utf8mb4_0900_ai_ci

表的collate变成了utf8mb4_0900_ai_ci,目前utf8mb4_0900_ai_ci与uft8mb4_general_ci在导数据时还有兼容性问题。这是个很容易忽视的坑。

查找官方文档:

mysql8.0导数时表字符集的的COLLATE总是utf8mb4_0900_ai_ci

mysql 8.0字符集uft8mb4默认的collate 是utf8mb4_0900_ai_ci ,这个值是参数

default_collation_for_utf8mb4控制,如果创建表时只给了字符集utf8mb4,没指定collate话,就会是默认的

utf8mb4_0900_ai_ci

mysql8.0导数时表字符集的的COLLATE总是utf8mb4_0900_ai_ci

测试如下:

mysql8.0导数时表字符集的的COLLATE总是utf8mb4_0900_ai_ci

如下所说的collate取默认值utf8mb4_0900_ai_ci

避免这类问题方法:可在会话级设置参数default_collation_for_utf8mb4

如下:

set session default_collation_for_utf8mb4=utf8mb4_general_ci;

mysql8.0导数时表字符集的的COLLATE总是utf8mb4_0900_ai_ci

这样变正常了。

标签: mysql

热门推荐