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

 
更多

数据库字符集环境:

字符集是utf8mb4

数据库的collation都是uft8mb4_general_ci

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

新创建的表的字符集是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;

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

查找官方文档:

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

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

utf8mb4_0900_ai_ci

测试如下:

如下所说的collate取默认值utf8mb4_0900_ai_ci

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

如下:

set session default_collation_for_utf8mb4=utf8mb4_general_ci;

这样变正常了。

打赏

本文固定链接: https://www.cxy163.net/archives/3110 | 绝缘体

该日志由 绝缘体.. 于 2022年10月23日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: mysql8.0导数时表字符集的的COLLATE总是utf8mb4_0900_ai_ci | 绝缘体
关键字: , , , ,

mysql8.0导数时表字符集的的COLLATE总是utf8mb4_0900_ai_ci:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter