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 ...
随机推荐
- gerrit设置默认rebase以及禁用分支
1.设置默认rebase 在工程配置中设置: 2.禁用分支 Refrance:refs/for/refs/heads/分支名 禁用权限:push “Block” (这样就禁止了开发者往这个分支上 ...
- iText C# 合并PDF文件流,以及A5变A4时内容默认放在最底下的问题的解决方法;ASP.NET 实现Base64文件流下载PDF
/// <summary> 合併PDF檔(集合) </summary> /// <param name="files">欲合併PDF檔之集合(一 ...
- inbox.MoveTo Folder does not move message out of inbox
inbox.MoveTo Folder does not move message out of inbox #160 Closed vnwind opened this issue on 14 M ...
- go https ajax
这个很好用啊,估计大有用武之地 你会喜欢 //https-ajax.go package main import ( "fmt" "io" "net/ ...
- jdk8新特性-亮瞎眼的lambda表达式
jdk8之前,尤其是在写GUI程序的事件监听的时候,各种的匿名内部类,大把大把拖沓的代码,程序毫无美感可言!既然Java中一切皆为对象,那么,就类似于某些动态语言一样,函数也可以当成是对象啊!代码块也 ...
- PB窗体之间进行传递参数
例:A窗口传递给B窗口y A窗口: 定义参数名称并赋值String s_parm s_parm=username+'%'+password,然后openwithparm(w_main,s_parm) ...
- caffe中的caffemodel参数提取方法
需要的文件为:deploy.prototxt caffemodel net = caffe.Net(deploy.txt,caffe_model,caffe.TEST)具体代码: import caf ...
- Unity之Vector3.SignedAngle实现
如代码: float angle = Vector3.Angle(v1, v2); angle *= Mathf.Sign(Vector3.Cross(v1, v2).y);
- aic bic mdl
https://blog.csdn.net/xianlingmao/article/details/7891277 https://blog.csdn.net/lfdanding/article/de ...
- tensorflow学习5----变量管理
---恢复内容开始--- 前面,读书笔记用加入正则化损失模型效果带来的提升要相对显著. 变量管理: 目的:当神经网络的结构更加复杂,参数更多的时候,就需要一个更好的方式来管理神经网络中的参数. 解决方 ...