Cause: java.sql.SQLException: 违反协议

项目 maven    webservice 接口测试 

数据库oracle11g


测试时出现一个错误. Cause: java.sql.SQLException: 违反协议   这个错误 也是第一次碰到  ,但是 我觉得 只要是错误 ,就说明 人家设计者肯定也知道,并作出了归纳。

然后我开始在报错的日志里从最上面一点点找,找到了selectbYid()这个方法   返回一个对象 ,这个看起来没错 ,紧接着 出现了  error code 1704   ,这下面就是 关于事务如何处理的,最后处理失败  报错 违反协议   


找了几遍 都没有发现问题,后来 思考了一下 为什么 调用mybatis查询方法后就开始 出事了?

继续抽丝剥茧,想到了 我返回的对象里面有CLOB字段,那么这个会不会有关系?

我无从验证 ,但是 这就引起了我的注意,如果说报错和JDBC有关系,那么应当留意这之前的每一个SQL ,于是 我将查询并返回对象的方法 修改了,而采用的是Insert()自带的返回带主键ID的对象 (对象在Insert前 属性除了ID都是有值的,insert后ID也有值了),这样操作后,再去运行,此时日志出现了变化:



再打印完insert  SQL  参数后,正常运行下面的SQL操作 并打印日志   之前出现的 error code 1704 消失了


由此可见,出错原因是:我在Insert后,查询并返回一个对象  对象数据库是CLOB,属性是String  ,这就可能引发问题了 


总结下原因,引发error code 1704错误的原因很复杂  ,我这里出现的原因是  CLOB  取出来 转String的时候 出现问题  导致无法封装到对象 ,我采取绕开这个查询,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

励志重写JDK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值