java.sql.SQLException: Protocol violation 解决方法
本篇承接这一篇 :java.sql.SQLException: Protocol violation 问题解析
问题描述
应用可以正常启动,但是运行一段时间时候偶尔会出现这个错误。
java.sql.SQLException: Protocol violation: [100]oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:527)oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227)oracle.jdbc.driver.T4C7Ocommoncall.doOROLLBACK(T4C7Ocommoncall.java:68)oracle.jdbc.driver.T4CConnection.doRollback(T4CConnection.java:725)oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:3970)org.apache.commons.dbcp.DelegatingConnection.rollback(DelegatingConnection.java:368)
这个问题发生的环境如下:
- Windows Server 2008
- JDK 1.6.0_30
- Tomcat 7
- Spring 3.2.3 +Hibernate 4.2.2
- Oracle:12.2.0.1.0
- JDBC Driver:ojdbc6
原因及解析:
以上报的是在receive()方法出错。
可能原因:
clob类型的字段中存储内容的长度过长(4193 字符?),导致驱动在接收(retrieve)出错。
解决方法:
可能解法1:
降低ojdbc的版本,替换 ojdbc6 为 ojdbc14。
但是,将ojdbc6 修改为 ojdbc14,在保存的时候又会出现如下错误:
root cause
java.lang.AbstractMethodErrororg.apache.commons.dbcp.DelegatingPreparedStatement.setCharacterStream(DelegatingPreparedStatement.java:328)org.apache.commons.dbcp.DelegatingPreparedStatement.setCharacterStream(DelegatingPreparedStatement.java:328)org.hibernate.type.descriptor.sql.ClobTypeDescriptor$4$1.doBind(ClobTypeDescriptor.java:114)org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:93)org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280)org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275)org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:57)org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2786)org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3191)org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:3126)org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3456)org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:140)org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:377)org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:369)org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:287)org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:339)org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1234)org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:554)org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:755)org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724)org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:475)org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:270)org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
这个 错误的原因是写入Clob类型字段有问题,报方法没有实现的错误。
终极解决方案
升级ojdbc6的版本。
使用WinRAR可以查看ojdbc6的具体版本号:
以上的版本是:
Implementation-Version: 11.2.0.4.0
到以下地址https://www.oracle.com/database/technologies/jdbcdriver-ucp-downloads.html
下载升级的ojdbc6的版本,下载后的版本号是:
Implementation-Version: 12.1.0.1.0
替换后重启应用,正常。
java.sql.SQLException: Protocol violation 解决方法相关推荐
- java.sql.SQLException: Protocol violation 问题解析
问题描述: Hibernate 4.0.2 Spring 3.2.3 ojdbc6 oracle使用的是 10.0.2版本 系统偶尔会出现以下错误: java.sql.SQLException: Pr ...
- MySQL插入数据时报错Cause: java.sql.SQLException: #HY000的解决方法
数据库中有字段要求不能为空,但是insert插入的时候,改字段没有值
- 记录---ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法
记录-ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法 先po代码: //1.读取配置文件中的基本信息I ...
- 【BUG】@JsonIgnore注解引发的java.sql.SQLException【已解决】
最近做了一个需求,页面上展示的字段要求尽可能的简介,但是实际插入到数据库的时候,会有很多ID,还有诸如创建人,创建时间,更新人,更新时间等字段. 而这些字段,前端要求不展示. 最后的页面效果如下: 于 ...
- 解决java.sql.SQLException: Value ‘0000-00-00‘ can not be represented as java.sql.Date
java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Date 异常的解决方法 查询数据时候遇到这个 ...
- mybatis项目报错:java.sql.SQLException: ORA-00911: 无效字符 解决方法
mybatis项目报错:java.sql.SQLException: ORA-00911: 无效字符 解决方法 参考文章: (1)mybatis项目报错:java.sql.SQLException: ...
- java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents 解决方法
转载自https://blog.csdn.net/weixin_37577564/article/details/80329775 在JDBC使用的时候有时候会出现java.sql.SQLExcept ...
- 解决 Error querying database. Cause: java.sql.SQLException: sql injection violation....
解决 Error querying database. Cause: java.sql.SQLException: sql injection violation- 最近在开发的时候老板的需求就是将模 ...
- Cause: java.sql.SQLException: Zero date value prohibited 异常解决方法
一.原因 使用Mybatis查询一条数据时 返回 异常如下: org.springframework.dao.TransientDataAccessResourceException: Error a ...
最新文章
- ADO.NET与ORM的比较(5):MyBatis实现CRUD
- VSCode中.py文件找不到路径的解决办法
- hdu1978(递推dp)
- Shallow-UWnet:水下图像增强新网络 2021年1月AAAI顶会论文
- 数据可视化【二】HTML+CSS+SVG+D3
- 概率中的独立和不相关
- Android自定义控件之实现listview滑动时渐隐渐现顶部栏
- 收藏!示波器探头的选择与使用
- bootstrap datetimepicker 日期插件
- 计算机网络知识点全面总结,图文并茂,方便大家学习
- 国五条催生末班车效应 郑州二手房交易量激增
- PTA-天梯赛-7-8 GOGO冲
- VB计算一年中某一天在这一年中是第几周
- atmega16应用之TWI(IIC) PCF8574T转接LCD1602
- 传奇服务器怎么修改升级武器成功,如何控制传奇服务器中宝石升级装备成功率和点数...
- Zotero文献管理工具
- 最绿色最高效,用win+r启动常用程序和文档
- Python基础之 7. 面向对象编程基础
- 在c语言中i10是什么意思啊,跪求!!!高手们帮忙
- java web 项目导入因为jdk版本出现红色大感叹号