MySQL 5.7和MySQL 8.0的4个细节差异

MySQL 5 .7 和 8 .0 有什么区别?
四个要点是:
1 .随着 GTID 的出现,旧的表创建方法不再有效。
使用新方法:创建表...到...;插入...选择...; 2 . 注意字段名称,不能使用顺序和第一个值,该项目将升级乘客。
3 . 不能使用BOOL类型。
8 .0 更加严格,并且图中配置错误。
4 .删除大文件后,8 .0的提示操作清晰,但仍有延迟,请谨慎尝试。

升级并不容易,你自己看看吧。

MySQL 5.7升级8.0后,排序规则问题解决方案汇总

呵呵,这个MySQL数据库升级问题真是让人头疼。
我参加问答论坛很多年了,见过很多数据库问题。
今天我们就来说说这个排序规则问题。

这个问题必须从升级开始。
MySQL从5 .7 升级到8 .0后,很多人在运行查询时遇到问题。
比如我以前就遇到过这样的情况。
当我执行查询时,屏幕上出现一条错误消息:“错误1 2 6 7 (HY000):操作‘find_in_set’的非法排序组合(utf8 mb4 _general_ci,IMPLICIT)和(utf8 mb4 _09 00_ai_ci,IMPLICIT)”。
这意味着什么?简单来说就是字符集和排序规则不匹配,MySQL无法识别。

这个问题主要出在MySQL8 .0默认的排序规则上。
它的默认COLLECT是utf8 mb4 _09 00_ai_ci,但是某些表或列可能仍然使用utf8 mb4 _general_ci。
当这两者相比较时,就有些不对劲了。

当时我不明白为什么会错。
然后我检查并注意到,当客户端连接时,它会显示本地排序规则和字符集设置。
结果就是客户端和服务器上的设置不一致,MySQL自然生气了。

有几种方法可以解决这个问题。
首先是修改MySQL my.cnf配置文件,将collat​​ion_connection的值设置为与全局变量相同。
不过MySQL 8 .0.3 5 版本之后就不推荐使用这种方法了。

第二种方法是直接修改表的排序规则。
可以将A_CODE和B_CODE列的COLLATE更改为utf8 mb4 _09 00_ai_ci,这样就不会出现错误。

最后的方法是修改SQL语句。
查询时直接指定A_CODE和B_CODE列的COLLATE为utf8 mb4 _09 00_ai_ci,这样也可以解决问题。

总之,这三种方法都有各自的应用场景,具体使用哪种方法取决于实际情况。
但说实话,我更喜欢第二种方法,就是直接改表,简单直接。

最后,这个事件也提醒我们在升级数据库时要小心。
使用SQLE平台进行SQL质量管理是一个不错的选择,可以帮助您提高开发、运维效率,提高数据质量。
如果您需要技术支持,只需访问相关链接或加入微信群即可寻求商业支持。
在我们这个行业,有时候我们要依靠集体的力量。