欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

记一次生产问题

程序员文章站 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就好了呗。