mycat下mysql jdbc connector使用高版本报PacketTooBigException异常
如下所示:
5.1.30切换为mysql-connector 5.1.46/40,报错,可参考https://blog.csdn.net/n447194252/article/details/75304303。
Tue Jun 26 14:23:20 CST 2018 WARN: Invalid value 'null' for server variable named 'auto_increment_increment', falling back to sane default of '1'.
14:23:20.773 [Druid-ConnectionPool-Create-932336632] ERROR com.alibaba.druid.pool.DruidDataSource - create connection holder error
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (44 > -1). You can change this value on the server by setting the max_allowed_packet' variable.
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:578) ~[mysql-connector-java-5.1.46.jar:5.1.46]
at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:418) ~[mysql-connector-java-5.1.46.jar:5.1.46]
at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3115) ~[mysql-connector-java-5.1.46.jar:5.1.46]
at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2344) ~[mysql-connector-java-5.1.46.jar:5.1.46]
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2739) ~[mysql-connector-java-5.1.46.jar:5.1.46]
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2482) ~[mysql-connector-java-5.1.46.jar:5.1.46]
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2440) ~[mysql-connector-java-5.1.46.jar:5.1.46]
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1381) ~[mysql-connector-java-5.1.46.jar:5.1.46]
at com.mysql.jdbc.ConnectionImpl.getTransactionIsolation(ConnectionImpl.java:3001) ~[mysql-connector-java-5.1.46.jar:5.1.46]
at com.alibaba.druid.filter.FilterChainImpl.connection_getTransactionIsolation(FilterChainImpl.java:347) ~[druid-1.0.14.jar:1.0.14]
at com.alibaba.druid.filter.FilterAdapter.connection_getTransactionIsolation(FilterAdapter.java:871) ~[druid-1.0.14.jar:1.0.14]
at com.alibaba.druid.filter.FilterChainImpl.connection_getTransactionIsolation(FilterChainImpl.java:344) ~[druid-1.0.14.jar:1.0.14]
at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.getTransactionIsolation(ConnectionProxyImpl.java:260) ~[druid-1.0.14.jar:1.0.14]
at com.alibaba.druid.pool.DruidConnectionHolder.<init>(DruidConnectionHolder.java:98) ~[druid-1.0.14.jar:1.0.14]
at com.alibaba.druid.pool.DruidDataSource.put(DruidDataSource.java:1721) [druid-1.0.14.jar:1.0.14]
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1890) [druid-1.0.14.jar:1.0.14]
当目标表不存在的时候会出现上述异常,且进入死循环,日志狂刷。官方解释:在使用mycat1.3和mycat1.4版本情况下,不要使用jdbc5.1.37和38版本的驱动,会出现如下异常报错:com.mysql.jdbc.PacketTooBigException: Packet for query is too large (60 > -1). You can change this value on the server by setting the max_allowed_packet' variable。建议使用jdbc5.1.35或者36的版本。
实际上可以认为开发者没有找到原因,是测试出来的。
回到5.1.30之后,正常。会提示正常的错误信息,如下:
如果后台报错,也会返回如下信息,包括SQL state [HY000]; error code [1105],但是如果是后台数据库报错,则会返回具体的错误号
A.D_OUTPUTDATE = 0 THEN ' ' ELSE TO_CHAR(A.D_OUTPUTDATE) END) D_OUTPUTDATE , NVL(B.C_CUSTNAME, ' ') C_CUSTNAME , NVL(B.C_IDENTITYPE, ' ') C_IDENTITYPE , NVL(B.C_IDENTITYNO, ' ') C_IDENTITYNO , (CASE WHEN A.D_REQOUTPUTDATE = 0 THEN ' ' ELSE TO_CHAR(A.D_REQOUTPUTDATE) END) D_REQOUTPUTDATE , A.C_FORCEREDEMPTIONTYPE , A.C_MEMO , A.F_REQRDMBALANCE , A.F_PROTECTBALANCE FROM ta_tconfirm_his A LEFT JOIN ta_taccoinfo B ON A.C_FUNDACCO = B.C_FUNDACCO AND A.C_TENANTID = B.C_TENANTID LEFT JOIN ta_tagencyinfo C ON A.C_AGENCYNO = C.C_AGENCYNO AND A.C_TENANTID = C.C_TENANTID LEFT JOIN ta_tbusinflag D ON A.C_BUSINFLAG = D.C_BUSINFLAG AND A.C_TENANTID = D.C_TENANTID LEFT JOIN ta_terrormess E ON A.C_CAUSE = E.C_CAUSE AND A.C_TENANTID = E.C_TENANTID LEFT JOIN ta_tfundinfo F ON A.C_FUNDCODE = F.C_FUNDCODE AND A.C_TENANTID = F.C_TENANTID LEFT JOIN ta_tnetinfo H ON A.C_NETNO = H.C_NETNO AND A.C_AGENCYNO=H.C_AGENCYNO AND A.C_TENANTID = H.C_TENANTID WHERE A.C_TENANTID = ? AND A.c_tacode = ? AND A.D_CDATE >= ? AND A.D_CDATE <= ? AND A.C_FUNDCODE IN ( SELECT fundcode FROM role_fundcode WHERE role_id IN ( ? ) AND fundcode IN(SELECT c_fundcode FROM ta_tfundinfo) UNION ALL SELECT ' ' AS fundcode FROM dual UNION ALL SELECT '*' AS fundcode FROM dual ) ) C
### Cause: java.sql.SQLException: ORA-00942: ????????????
; uncategorized SQLException for SQL []; SQL state [HY000]; error code [1105]; ORA-00942: ????????????
; nested exception is java.sql.SQLException: ORA-00942: ????????????
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83) ~[spring-jdbc-3.2.14.RELEASE.jar:3.2.14.RELEASE]
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) ~[spring-jdbc-3.2.14.RELEASE.jar:3.2.14.RELEASE]
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) ~[spring-jdbc-3.2.14.RELEASE.jar:3.2.14.RELEASE]
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:74) ~[mybatis-spring-1.2.3.jar:1.2.3]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:399) ~[mybatis-spring-1.2.3.jar:1.2.3]
at com.sun.proxy.$Proxy40.selectOne(Unknown Source) ~[?:?]
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:165) ~[mybatis-spring-1.2.3.jar:1.2.3]
at net.hs.cw.bomp.engine.service.JdbcServiceEngine.selectPageCount(JdbcServiceEngine.java:498) ~[bomp-runtime-1.0.0-SNAPSHOT.jar:?]
at net.hs.cw.bomp.engine.service.JdbcServiceEngine.callQueryService(JdbcServiceEngine.java:460) ~[bomp-runtime-1.0.0-SNAPSHOT.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_45]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_45]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_45]
at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_45]
mycat中对应的错误信息如下:
06/26 14:45:19.609 WARN [BusinessExecutor1] (MultiNodeHandler.java:126) -error response from JDBCConnection [id=68,autocommit=true,pool=org.opencloudb.jdbc.JDBCDatasource@1dbc0e73, schema=hs_tatrade2, dbType=ORACLE, oldSchema=hs_tatrade2, packetId=-55, txIsolation=0, running=false, borrowed=false, host=null, port=-1, con=oracle.jdbc.driver.T4CConnection@12645708, respHandler=null, attachement=null, headerOutputed=false, modifiedSQLExecuted=false, startTime=1529975130206, lastTime=1529995519607, isSpark=false, processor=org.opencloudb.net.NIOProcessor@2558af45] err ORA-00942: 表或视图不存在
mysql 8.0已经不支持5.x系列的jdbc connector了,目前测试下来,还是推荐大家使用sharding jdbc 2.x。
补充:
升级到mycat 1.6.5版本之后,上述问题就没有了,所以用mycat的可以考虑。去哪儿的数据库负责人最近写了一篇驳斥mycat定位的文档http://www.sohu.com/a/258761170_411876,大家可以看看。
mycat下mysql jdbc connector使用高版本报PacketTooBigException异常的更多相关文章
- C#或Net连接Oracle操作提示 Oracle 客户端 version 8.1.7 或更高版本报错
异常问题 远程连接ORCALE 服务器,而本地未安装任何ORCALE 相关客户端及ODAC .using System.Data.OracleClient;当我们用程序操作Oracle库的时候,OPE ...
- Linux下MySQL c++ connector示例
最近在学习数据库的内容,起先是在windows下用mysql c++ connector进行编程,之所以选用c++而不是c的api,主要是考虑到c++ connector是按照JDBC的api进行实现 ...
- Winserver2012下mysql 5.7解压版(zip)配置安装
一.安装 下载mysqlzip版本mysql不需要运行可执行文件,解压即可,下载zip版本mysqlmsi版本mysql双击文件即可安装,相对简单,本文不介绍此版本安装 配置环境变量打开环境变量配置页 ...
- 不知道数据库中表的列类型的前提下,使用JDBC正确的取出数据
概要: 使用jdbc 如果在不知道表结构的情况下,如何读出表信息? 使用ResultSetMetaData; 然后使用getColumnType 获取column 类型 使用getColumnName ...
- springboot整合JDBC出现Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'.
今天使用springboot整合JDBC的使用,开始使用的是 com.mysql.jdbc.Driver驱动 结果运行出现此异常 那我们根据提示要求来修改即可 把驱动改成最新的com.mysql.cj ...
- Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived
文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...
- MySQL Connector/J 6.x jdbc.properties 配置, mysql-connector-java-6.0.4.jar 异常
今天学习SSM框架整合,完成Spring和mybatis这两大框架的整合做测试时候出来很多问题,主要来自于配置文件. 我这里重点说一下Mysql数据驱动配置. 配置pom.xml时候去网站 MySQL ...
- 使用Mycat构建MySQL读写分离、主从复制、主从高可用
数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能. 从数据库的角度来说,对于大多数应用来说,从集中到分布,最基本的一个需求不是数据存储的瓶颈,而是在于计算的瓶颈,即S ...
- Windows版Mycat结合mysql安装配置+水平切分(转载)
来源:https://segmentfault.com/a/1190000009495748 参考文档:Mycat安装与使用 环境 环境 版本 windows 10 java 1.8.0 mysql ...
随机推荐
- 《全栈性能Jmeter》-5JMeter负载与监听
- python-数据
python基本数据类型 数字 整型 int 123 浮点型 float 3.2 布尔型 bool True/False 复数 complex 1+1j 组 序列 字符串 str "hell ...
- JMeter开发插件——图片验证码识别
我们在性能测试中总会时不时地遭遇到来自于应用系统的各种阻碍,图片验证码就是一类最常见的束缚,登录或交易时需要按照图片中的内容输入正确的验证信息后,数据才可以提交成功,这使得许多性能测试工具只能望而却步 ...
- mx:Label (标签)
0. <mx:Label x="139.5" y="55" text="Hello,World!" width="125&q ...
- React创建组件的不同方式(ES5 & ES6)
一. 首先缕清楚React.createElement.React.createClass.React.Component之间的关系 1. React.createElement(HTML eleme ...
- 019-JQuery(Ajax异步请求)
使用jquery完成异步操作 ->开发文档提供的异步API url:请求地址 type:请求方式,主要是get.post data:{}:请求的数据 dataType:返回值的类型,主要有xml ...
- SqlServer表和EXCEL数据互相复制方法
一.SqlServer表数据复制到excel 1.新建查询,用sql语句把表数据读出来 2.然后,选择数据,右键,复制(也可以点击连同标题复制),复制到记事本中(不然会乱码) 3.然后再把记事本的内容 ...
- CentOS中无法使用setup命令 -bash:setup: command not found
出现这个问题是因为 Minimal 安装模式 所以并没有安装 setuptool 软件. 解决办法为: 使用yum 源直接下载安装 或者 去下载 setuptool 软件包安装 #安装setuptoo ...
- 安装oracle经验
1.使用database configuration assistant配置和创建数据库 2.使用net manager配置监听 3.使用netconfiguration assistant配置服务
- Beta冲刺阶段5.0
1. 提供当天站立式会议照片一张 2. 每个人的工作 (有work item 的ID) 成员 昨天已完成的工作 今天计划完成的工作 工作中遇到的困难 具体贡献 郑晓丽 首页活动详情界面的美化 实现首页 ...