记一次生产问题
程序员文章站
2024-01-11 16:29:40
...
改完bug,自测完成,提交代码,美滋滋的点击发布。
测试:“哎,我后台管理网站提交了修改,为什么前台加载的数据还是旧数据?”。
我赶紧本地重新测试了一下,并没什么问题啊,于是登上服务器。
- 检查数据源配置,没问题。
- 列表项目
- 检查修改的代码是否成功发布,没问题。
- 查看后台日志,没报错。
- 加上debug代码,打印出了执行的sql。
- 数据库查询,前台修改的价格确实没同步到数据库,可是,为什么呢?(抓耳挠腮…)
sql执行了,数据却并没有更新,真相只有一个! ------事务未提交。
那既然本地测试没有问题,说明服务器上的某些配置必然有问题。
本地和测试环境的区别就在于使用的web容器还有数据库连接配置不同,逐个检查web.xml 以及 jndi的配置文件,第一遍并没有发现任何问题。
但是,认真查看却发现,由于没有采用spring的事务管理,所以原代码使用了prePareStatement的方式执行sql,而jndi的配置有些问题。如下
我c,竟然是因为这个问题。这里设置成了false,而我再代码中并没有显示执行
connection.commit();
导致,sql虽然成功执行,但是并未提交事务。
ok,剩下的事情就简单了,这个属性改为true就好了呗。