数据库配置字符集为utf8mb4 ,且配置文件增加 initconnect='set names utf8mb4' 后仍然报错。解决方案 注意事项

增加数据库配置后  initconnect='set names utf8mb4'  仍报错,是因为 

源码里 每次会根据 获取的数据库信息判断后, 执行 set names utf8;

参考mysql 官方文档,解决方案  升级版本:

升级后,测试 生僻字多表关联查询,不再报错;

解决后,修改字符集, 部分表 所有列 长度加起来 超过了 65535 字节,也会报错:

是因为utf8 一般一个字符占用 3个字节,utf8mb4 一个字符 占用4个字节,所以会出现这个情况。

一般只能缩减 字段的长度,保持字段总长度在 16383 个内;(这个长度 不包含 longtext 和text 类型字段);

可以查询 information 库,统计哪些 表是修改字符集后超长的

也可以查询 information 库的 columns 表,汇总哪些 是utf8 哪些是utf8mb4 字符集;等等

发布了301 篇原创文章 · 获赞 197 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/boss_way/article/details/103911769