uncategorized SQLException for SQL错误解决

今天搬砖的时候后台报了一个错误,但是我检查了一遍代码没有发现任何错误。

错误信息如下:

StatementCallback; uncategorized SQLException for SQL [delete from tablename where id = 1]; SQL state [HY000]; error code [1785]; Statement violates GTID consistency: Updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables.; nested exception is java.sql.SQLException: Statement violates GTID consistency: Updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables.

经过排除,发现进行批量更新的表其中有一个表的引擎是用的MyISAM,估计是当初设计表的时候弄错了。

平时开发时,大部分的情况下对数据进行更新操作都需要用到事务,以便发生错误时进行回滚。但是存储引擎为MyISAM的数据表是不支持事务的,如果不清楚可以看这个:InnoDB和MyISAM的区别,或者自行百度。

并不是所有的表都用InnoDB最好,还是得看具体的应用场景,但是这里使用InnoDB肯定没问题。那最后解决办法也很简单,就是把表的引擎改成innodb,命令如下:alter table tablename engine=innodb

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

佛祖保佑永不宕机

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

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

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

打赏作者

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

抵扣说明:

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

余额充值