MySQL Autocommit
最近遇到一个问题,在测试环境没有重现,但是在生产环境就频繁出现。问题的现象时,当我们在生产页面添加一个用户或者一条记录的时候,刷新页面始终是为空的数据,也就是数据没有入库,但是偶尔它又有数据。这个问题就很奇怪。后来追踪到代码的时候发现代码层没有做事务的控制,完全交给了数据库去管理,这个时候如果代码从db申请一个连接,然后完成操作之后,其实是否真实的commit是要看数据库的操作的。MySQL默认的配置中是将autocommit设置为1,也就是默认打开,但是我们公司的dba设置中,统一是0也就是关闭状态的,所以导致了这次事故的发生。作为一个程序员来说,我觉得,应该是要自己在业务逻辑层面来控制,不应该交由db去管理,这种行为有点可耻。