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

mysql一个时区引发的问题_MySQL

程序员文章站 2022-06-08 11:12:20
...
bitsCN.com mysql一个时区引发的问题 近期有客户反馈了一个问题,在使用ERP 2BizBox的过程中,发现如下问题: 在查看财务模块的报表损益表的时候,修改时间参数,损益报表的数据没有改变。
mysql一个时区引发的问题_MySQL
经过多方查证,最终发现2BizBox 本身的查询并没有问题,而是由于客户修改了系统的默认时区导致的。 具体是什么问题,请听我细细道来: 2BizBox在处理损益表的查询的时候,由于涉及到了多个表的查询,应该算是一个比较重的查询,所以会首先从多个表里面把数据查询下来,并缓存在一个临时表里面;这样下次在查询的时候,会有一个查询时间间隔的判断,如果本次的查询时间比上一次查询的时间大的数值间隔小于3秒,就会从临时表里面直接取出数据,这样处理是为了防止同一个用户同时多次查询,给系统造成负担。上一次的查询时间保存在数据库的,本次查询时间就是系统的当前时间,这样在正常的系统是可以稳定的执行的。那么如果服务器操作系统与数据的时区设置不一致的时候,就会有可能导致本次查询的时间反而小于上次查询时间,应此就会从临时表里面去取数据,而不会更新临时表的数据。 比如数据库的时区是CST(UTC -6 hours),操作系统时区:CDT(UTC -5 hours),这样就会导致系统的时间数据库的时间一个小时。这样如果在一次查询之后,在改变查询参数的时候,如果相隔的时间在一个小时之类,都不会更新数据,所以就出现了改变查询参数而报表数据不变的情况。 解决的方法当然就很简单:把mysql的时区和系统时区调整成一致。 作者 netcy bitsCN.com
相关标签: mysql 损益表