Luck_Lyh 2022-08-09 18:55 采纳率: 100%
浏览 162
已结题

spring boot 2.5.14整合mybatisplus3.5.1时使用@Transactional出现异常

问题遇到的现象和发生背景

spring boot 2.5.14整合mybatisplus3.5.1时使用@Transactional出现异常

问题相关代码,请勿粘贴截图
org.springframework.jdbc.UncategorizedSQLException: 
### Error updating database.  Cause: java.sql.SQLException: Error
### The error may exist in com/lnbdy/oa/mapper/file/FileDataMapper.java (best guess)
### The error may involve com.lnbdy.oa.mapper.file.FileDataMapper.insert-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO oa_file_data  ( id, file_id, type, sort, name, value, is_title,  create_man,  create_photo )  VALUES  ( ?, ?, ?, ?, ?, ?, ?,  ?,  ? )     
### Cause: java.sql.SQLException: Error
; uncategorized SQLException; SQL state [null]; error code [0]; Error; nested exception is java.sql.SQLException: Error
    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)
    at com.sun.proxy.$Proxy133.insert(Unknown Source)
    at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 8
    at com.mysql.cj.protocol.a.NativePacketPayload.readInteger(NativePacketPayload.java:398)
    at com.mysql.cj.protocol.a.NativeServerSessionStateController$NativeServerSessionStateChanges.init(NativeServerSessionStateController.java:103)
    at com.mysql.cj.protocol.a.result.OkPacket.parse(OkPacket.java:66)
    at com.mysql.cj.protocol.a.NativeProtocol.readServerStatusForResultSets(NativeProtocol.java:1755)
    at com.mysql.cj.protocol.a.ResultsetRowReader.read(ResultsetRowReader.java:83)
    at com.mysql.cj.protocol.a.ResultsetRowReader.read(ResultsetRowReader.java:42)
    at com.mysql.cj.protocol.a.NativeProtocol.read(NativeProtocol.java:1651)
    at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:87)
    at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:48)
    at com.mysql.cj.protocol.a.NativeProtocol.read(NativeProtocol.java:1664)
    at com.mysql.cj.protocol.a.NativeProtocol.readAllResults(NativeProtocol.java:1718)
    at com.mysql.cj.NativeSession.queryServerVariable(NativeSession.java:599)
    at com.mysql.cj.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:1394)
    at com.mysql.cj.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:1387)
    at com.mysql.cj.jdbc.ClientPreparedStatement.checkReadOnlySafeStatement(ClientPreparedStatement.java:291)
    at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:301)
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3446)
    at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:434)
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3444)
    at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:152)
    at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:483)
    ... 219 more
  • 写回答

5条回答 默认 最新

  • 穿条秋裤到处跑 2022-08-10 18:00
    关注

    at com.mysql.cj.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:1394)
    看到了这句,如果设置了只读的话,插入数据就会报错。
    检查一下类上有没有标注@Transactional(readOnly = true),或者为了保险,在你报错的那个方法外面的@Transactional注解,显示生命一下@Transactional(readOnly = false)

    如果对您有帮助,麻烦采纳一下回答,谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 8月30日
  • 已采纳回答 8月22日
  • 修改了问题 8月10日
  • 创建了问题 8月9日

悬赏问题

  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?