本篇承接这一篇 :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 解决方法相关推荐

  1. java.sql.SQLException: Protocol violation 问题解析

    问题描述: Hibernate 4.0.2 Spring 3.2.3 ojdbc6 oracle使用的是 10.0.2版本 系统偶尔会出现以下错误: java.sql.SQLException: Pr ...

  2. MySQL插入数据时报错Cause: java.sql.SQLException: #HY000的解决方法

    数据库中有字段要求不能为空,但是insert插入的时候,改字段没有值

  3. 记录---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 ...

  4. 【BUG】@JsonIgnore注解引发的java.sql.SQLException【已解决】

    最近做了一个需求,页面上展示的字段要求尽可能的简介,但是实际插入到数据库的时候,会有很多ID,还有诸如创建人,创建时间,更新人,更新时间等字段. 而这些字段,前端要求不展示. 最后的页面效果如下: 于 ...

  5. 解决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 异常的解决方法 查询数据时候遇到这个 ...

  6. mybatis项目报错:java.sql.SQLException: ORA-00911: 无效字符 解决方法

    mybatis项目报错:java.sql.SQLException: ORA-00911: 无效字符 解决方法 参考文章: (1)mybatis项目报错:java.sql.SQLException: ...

  7. 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 ...

  8. 解决 Error querying database. Cause: java.sql.SQLException: sql injection violation....

    解决 Error querying database. Cause: java.sql.SQLException: sql injection violation- 最近在开发的时候老板的需求就是将模 ...

  9. Cause: java.sql.SQLException: Zero date value prohibited 异常解决方法

    一.原因 使用Mybatis查询一条数据时 返回 异常如下: org.springframework.dao.TransientDataAccessResourceException: Error a ...

最新文章

  1. ADO.NET与ORM的比较(5):MyBatis实现CRUD
  2. VSCode中.py文件找不到路径的解决办法
  3. hdu1978(递推dp)
  4. Shallow-UWnet:水下图像增强新网络 2021年1月AAAI顶会论文
  5. 数据可视化【二】HTML+CSS+SVG+D3
  6. 概率中的独立和不相关
  7. Android自定义控件之实现listview滑动时渐隐渐现顶部栏
  8. 收藏!示波器探头的选择与使用
  9. bootstrap datetimepicker 日期插件
  10. 计算机网络知识点全面总结,图文并茂,方便大家学习
  11. 国五条催生末班车效应 郑州二手房交易量激增
  12. PTA-天梯赛-7-8 GOGO冲
  13. VB计算一年中某一天在这一年中是第几周
  14. atmega16应用之TWI(IIC) PCF8574T转接LCD1602
  15. 传奇服务器怎么修改升级武器成功,如何控制传奇服务器中宝石升级装备成功率和点数...
  16. Zotero文献管理工具
  17. 最绿色最高效,用win+r启动常用程序和文档
  18. Python基础之 7. 面向对象编程基础
  19. 在c语言中i10是什么意思啊,跪求!!!高手们帮忙
  20. java web 项目导入因为jdk版本出现红色大感叹号

热门文章

  1. php中NULL、false、0、 有何区别?
  2. java中实现全局变量的功能
  3. Canvas绘图基础(一)
  4. CSS3渐变——线性渐变
  5. 你的Android应用完全不需要那么多的权限
  6. 制作一个可安装、可启动、可停止、可卸载的Windows service
  7. [转载]ASP.NET 格式化字符串
  8. VS2013/2012 下无法打开 源 文件“stdafx.h”的解决方法
  9. C# 数据库并发的解决方案(通用版、EF版)
  10. 推翻相对论的专家,就差安排明天几点日出了