MyCat|Shardingsphere-proxy:jdbc连接MySQL8.0.33的query_cache_size异常解决方案

news/2024/11/30 2:40:27/

当前版本:MySQL 8.0.33 ,Mycat-server-1.6.7.6-release-20220524173810-win,apache-shardingsphere-5.3.2-shardingsphere-proxy-bin,jdk 1.8

1. 问题的主要背景

  1. MySQL 8.0.33版本,搭建了主从复制,需要借助中间件实现读写分离操作
  2. 使用了Mycat-server-1.6.7.6-release-20220524173810-win.tar 作为连接MySQL的门面,连接端口为8066,并完成了正常配置
  3. 使用java的jdbc连接却报错了:java.sql.SQLException: Unknown system variable 'query_cache_size'

2. 解决过程

本人的解决方法如下:

本人通过查询过很多文章,并尝试了其中的代码(网上还有人修改源码吐了),但是无法解决该问题。通过分析发现query_cache_size是在8.0版本中被移除了(其实这个是一个小问问题,就是框架突然查询了这个数据导致的异常错误,只是这个异常被框架抛出给了jdbc连接导致不能查询数据!)

事情的转机:

由于一次偶然的机会在使用apache-shardingsphere-5.3.2-shardingsphere-proxy-bin也出现了相同的错误,也是爆出了这个异常也是无法解决(但是突然想到shardingsphere中的lib是没有mysql的驱动的),所以必然也会碰到这个问题,这个问题肯定已经是解决了的

在这里插入图片描述

若是官方没有没有解决这个问题是不可能发布的!所以一定有配置项可以规避这个问题,就是不执行查询query_cache_size变量的方法

通过本人查找发现shardingsphere-proxy中有一个配置项(是server.yaml文件)可以修改(就是mysql的版本)?,配置项(proxy-mysql-default-version)中添加版本给人看?这里可能有其他用法
在这里插入图片描述
突然灵光一闪,修改一下这个,然后重新测试发现成功了!!!

后面的就是联想到MyCat,发现这个更加奇怪,lib库中居然直接使用8.0.25的驱动程序

在这里插入图片描述

所以MyCat实际上已经解决了这个问题,不然为什么人家直接放8.0.25的驱动程序,所以MyCat必然有与shardingsphere-proxy,相同的关系修改并避免这个问题。

经过查看配置项发现了如下
在这里插入图片描述
居然模拟MySQL的版本号,尝试修改一下:
在这里插入图片描述

测试成功了

3. 具体解决方案如下

  1. MyCat 修改server.xml中的fakeMySQLVersion为8.0以上可以解决这个问题,不需要修改源代码,jdbc就可以连接
  2. Shardingsphere-proxy只需要修改server.xml文件中的props中的proxy-mysql-default-version为8.0以上同样可以解决这个问题,jdbc也可以直接连接

注意navicat可能会有schema的异常,但是五官紧要!!!


http://www.ppmy.cn/news/94021.html

相关文章

Linux的进程信号(上)

文章目录 1. 信号入门2. 技术应用角度的信号3. 信号概念4. 信号处理常见方式5. 产生信号5.1 通过终端按键产生信号5.2 调用系统函数向进程发信号5.3 由软件条件产生信号5.4 硬件异常产生信号 6. Core Dump 1. 信号入门 在生活中,比如红绿灯,铃声这些&am…

每日一题——两数之和(返回下标和返回数值两种情况)

每日一题 两数之和 题目链接 思路 注:本题只采用暴力解法,时间复杂度为O(n2),如果采用哈希表,可以将时间复杂度降到O(n),但由于笔者还未对哈希表展开学习,故不做讨论 我们直接用两层for循环来解决问题 第…

【Python】内置函数

文章目录 反射相关【4】基础数据类型相关【38】和数字相关&#xff08;14&#xff09;数据类型 <4>bool([x])int((x, base10)float([x])complex([real[, imag]]) 进制转换 <3>bin(x)oct(x)hex(x) 数学运算&#xff08;7&#xff09;abs(x)divmod(a, b)round(x [, n…

Scikit-LLM:将大语言模型整合进Sklearn的工作流

我们以前介绍过Pandas和ChaGPT整合&#xff0c;这样可以不了解Pandas的情况下对DataFrame进行操作。现在又有人开源了Scikit-LLM&#xff0c;它结合了强大的语言模型&#xff0c;如ChatGPT和scikit-learn。但这个并不是让我们自动化scikit-learn&#xff0c;而是将scikit-learn…

第三十九章 青格郎当(青衣弹灵诞生)

“巴哥奔&#xff0c;我们诚挚邀请你加入金马弹灵&#xff0c;着青衣&#xff0c;事渲染&#xff0c;你愿意么&#xff1f;” 蓝衣弹灵话音刚落&#xff0c;大家一齐睁开眼睛&#xff0c;直愣愣的盯着巴哥奔。 “唔~~~可~” 好半天&#xff0c;巴哥奔才憋出这个字&#xff0c;刚…

uCOSii任务管理

uCOSii任务管理 主要用来测试uCOSii“创建任务,挂起任务,恢复任务,发送删除任务请求,删除任务”。 在os_cfg.h中 #define OS_LOWEST_PRIO 63u //设置最低优先级为63,则空闲任务优先级OS_TASK_IDLE_PRIO就等于63 //OS_PRIO_SELF为255,因此OS_LOWEST_PRIO<255 注意&a…

定积分的计算(牛顿-莱布尼茨公式)习题

前置知识&#xff1a;定积分的计算&#xff08;牛顿-莱布尼茨公式&#xff09; 习题1 计算 ∫ 0 2 ( x 2 − 2 x 3 ) d x \int_0^2(x^2-2x3)dx ∫02​(x2−2x3)dx 解&#xff1a; \qquad 原式 ( 1 3 x 3 − x 2 3 x ) ∣ 0 2 ( 8 3 − 4 6 ) − 0 14 3 (\dfrac 13x^3-…

Emacs之定制化mode line(第一百零二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…