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

news/2024/5/18 22:43:24 标签: 数据库, mycat, shardingsphere, jdbc

当前版本: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.niftyadmin.cn/n/365480.html

相关文章

javaEE基于springboot的小区社区文化活动报名系统jsp生活服务网站

社区文化宣传网站采用的开发框架为springboot框架,开发工具采用Eclipse,idea 服务器用的是Tomcat。编码语言是Java,数据库采用Mysql数据库。 本社区文化宣传网站,主要服务的用户是社区附近的居民,为居民展示最新的新闻…

纯js实现在线文字识别,从图片中提取文本信息

当你需要将图片中的文字内容提取出来时,你可能想到了手动输入或者使用OCR技术。而当你需要进行在线文字识别时,一个纯JavaScript实现的OCR工具可能会成为你的优选方案。 纯JavaScript,使得在浏览器内部进行文字识别变得可能。 此外&#x…

CentOS7.4安装OpenVPN

系统环境 [rootvpn ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 一. 准备工作 [rootvpn ~]# yum -y install openssl-devel openssl pam pam-devel lzo lzo-devel pkcs11-helper pkcs11-helper-devel 二. 安装OpenVPN服务 1. 下载openvpn源码包 [r…

java基础入门-15-【集合(Map可变参数集合工具类)】

Java基础入门-15-【集合(Map&可变参数&集合工具类)】 24、集合(Map&可变参数&集合工具类)双列集合的特点1.Map集合1.1 Map集合概述和特点【理解】1.2 Map集合的基本功能【应用】1.3 Map集合的获取功能【应用】1.4 Map集合的遍历(方式1)【应用】----- 键找值…

vue实现深拷贝的方法

在 vue中,深拷贝是一个很有用的功能,在不改变原来对象状态的情况下,进行对象的复制。 但要实现深拷贝,需要两个对象具有相同的属性。如果两个对象不同,深拷贝也不能实现。 1.我们将变量A的属性赋给变量B,但…

K8s进阶6——pod安全上下文、Linux Capabilities、OPA Gatekeeper、gvisor

文章目录 一、Pod安全上下文1.1 配置参数1.2 案例11.2.1 dockerfile方式1.2.2 pod安全上下文方式 1.3 案例21.4 Linux Capabilities方案案例1案例2 二、pod安全策略2.1 PSP(已废弃)2.1.1 安全策略限制维度 2.2 OPA Gatekeeper方案2.2.1 安装Gatekeeper2.…

新手须知的pr入门知识,小红书媒介话术分享

我们都知道,这是一个内容为王的时代。在众多的平台上,都存着无数优秀的内容产出者,也就是达人。今天对新手须知的pr入门知识,小红书媒介话术分享。 一、什么是pr PR即Public Relations的简称,翻译过来就是公关的意思 。…

Linux 下进行权限修改 chmod命令

查看权限 ls -l 文件名该命令可以查看文件的详细属性,包括文件的权限 权限含义 -rwxrwxrwx在文件系统中,user、group、others的权限是分开的,第一个rwx代表user的权限、第二个rwx代表group的文件、第三个rwx代表others的权限 字符含义值…