程序员开发实例大全宝库

网站首页 > 编程文章 正文

解决Mysql8.0.32版本UNION ALL不能使用中文查询的Bug

zazugpt 2024-11-03 16:04:20 编程文章 17 ℃ 0 评论

周三下午,一个项目上的同事微信上跟我说,让我看一个Mysql的问题,我问他Mysql还能出什么问题,他说中文查不到数据,我一听还有这种邪乎的问题,第一想到的应该是字符编码问题,结果没有想到是Mysql的8.0.32 版本bug,这里记录一下解决方案

周三下午,一个项目上的同事微信上跟我说,让我看一个Mysql的问题,我问他Mysql还能出什么问题,他说中文查不到数据,我一听还有这种邪乎的问题,第一想到的应该是字符编码问题,结果没有想到是Mysql的8.0.32 版本bug,这里记录一下解决方案

一、现象还原

  1. 直接上图
  • 本来一个简单的 UNION all 查询,但结果结果就是空的,网上很多同行说就是修改字符集可以解决这个问题,其实针对 Mysql8.0.32 的版本并不生效,这是一个Mysql本身的bug,修改字符集并不能解决问题
  • 官方bug说明:https://bugs.mysql.com/bug.php?id=109699

二、解决办法

  • 通过set解决
set optimizer_switch='derived_condition_pushdown=off';
  • 通过升级版本
    • 升级到 >8.0.32 版本解决该问题,一般在做部署验证阶段发现该问题可以通过升级版本解决,如果已经是在使用的过程中发现该问题,不建议通过该方式解决
  • 通过修改my.cnf推荐做法
[mysqld]
  ...
  ...
  optimizer_switch=derived_condition_pushdown=off
    • 通过在my.cnf 配置文件添加optimizer_switch解决该BUG
  • 结果验证

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表