使用阿里云drds分库分表某一个节点完整报错
org.springframework.transaction.TransactionSystemException: Could not commit Hibernate transaction; nested exception is org.hibernate.TransactionException: commit failed
at org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:588)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:485)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:291)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
at com.ecare.order.services.work.mess.MessageMQWorkService$$EnhancerBySpringCGLIB$$f6b6fa10.deleteById(<generated>)
at com.ecare.order.job.OrderSendMQJobService.execute(OrderSendMQJobService.java:45)
at com.ecare.platform.quartz.core.thread.JobThread.run(JobThread.java:125)
Caused by: org.hibernate.TransactionException: commit failed
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:187)
at org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:584)
... 12 more
Caused by: org.hibernate.TransactionException: unable to commit against JDBC connection
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doCommit(JdbcTransaction.java:116)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:180)
... 13 more
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: [1640981511adf000-12][172.*.*.*:3306][order]ERR-CODE: [TDDL-5003][ERR_TRANS_LOG] Failed to append batch of undo-logs table for group ORDERDB_1557389782208GBCY_ZST8_0006: Data truncation: Data too long for column 'INFO' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4230)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4164)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2832)
at com.mysql.jdbc.ConnectionImpl.commit(ConnectionImpl.java:1749)
at com.alibaba.druid.filter.FilterChainImpl.connection_commit(FilterChainImpl.java:186)
at com.alibaba.druid.filter.stat.StatFilter.connection_commit(StatFilter.java:266)
at com.alibaba.druid.filter.FilterChainImpl.connection_commit(FilterChainImpl.java:182)
at com.alibaba.druid.filter.FilterAdapter.connection_commit(FilterAdapter.java:781)
at com.alibaba.druid.filter.FilterChainImpl.connection_commit(FilterChainImpl.java:182)
at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.commit(ConnectionProxyImpl.java:123)
at com.alibaba.druid.pool.DruidPooledConnection.commit(DruidPooledConnection.java:750)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doCommit(JdbcTransaction.java:112)
... 14 more
出现的原因:
drds某些旧版本,事务日志表的Info字段可能会写入超长的数据,导致报错,修改系统表结构可以解决 触发场景可能是一些大SQL,或者长事务。
研发 排查了 一遍 其它实例 不会出现此问题
解决方案:需要联系阿里云服务台,提交工单协助解决