暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 f5d 2022-03-17
9835

数据库字符集环境:


字符集是utf8mb4

数据库的collation都是uft8mb4_general_ci


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

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


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

mysql@node1:/home/db/mysql$ cat t1.lst
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 ;

这样变正常了。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论