
Mysql Autocommit问题
客户反馈我们的产品有个很奇怪的问题。 添加完商品后,可以看到商品,但是一刷新页面,刚才添加的商品就消失啦。 以前没碰到过,一直都用的好好的为什么今天就不行了呢? 分析问题 既然一刷新即消失了,就证明没有写入到数据库。 没写入到数据库是什么原因呢? API 也没有报错呀? 更加奇怪的是,有的页面有这个问题,有的没有这个问题。 后端的API 有的是golang写的,有的是Java写的。 golang orm对mysql 数据库的写操作存在上面说的刷新就丢失的问题,Java的orm对mysql的写操作没有问题。 这是为什么呢? DBA 排查了很久发现原来是客户那边的DBA把 mysql的 session autocommit的配置关闭啦。 autocommit 翻了下文档,确定 Java的orm框架会忽略mysql server的配置默认自己commit,golang的orm则没有这个优化(也许是有但我们没有启用?)。 所以会出现 java的后端是正常的,golang的后端写不了mysql。 解决方案 客户DBA开启autocommit配置项后,产品业务恢复正常。