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

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 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题