MySQL插入数据库的瞬间时区改变

stenlylee 2008-09-27 01:59:19
java访问MySQL,框架等排除,在将一条记录保存进入数据库的瞬间出现问题,具体描述如下:
生成一个对象,例如
MyObject myObject = new MyObject();
myObject.setName = "testName";
myObject.setTime = new Date();
此时system.out出来的myObject.getTime();都是正确的时间,但是一旦我保存进MySQL中就有可能变成8个小时以后的时间
比如我new Date()输出为1点,保存前打印这个时间还是1点,但是保存进MySQL后打开数据库看记录,变成9点了
而且最郁闷的是,这个变化无规律可言,有时没问题,有的时候会变掉,起码到现在为止还没找到规律。
MySQL已经set global time_zone = '+8:00'了
...全文
219 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
stenlylee 2008-11-23
  • 打赏
  • 举报
回复
貌似找到问题了
找到一种说法是windows的某一个更新补丁将注册表里面的时区改成了0时区了,所以比我们这里时间少8个小时
我下了个用来恢复这个问题的注册表,貌似现在是好了,等待时间的验证
因为这个问题本身也不是一直发生的,等一段时间看看会不会发生。
剑心永远OK 2008-10-20
  • 打赏
  • 举报
回复
用MYSQL convert_tz转换一下看看
stenlylee 2008-10-15
  • 打赏
  • 举报
回复
系统时区是+8,这个肯定是确认过的
MySQL用的既然是system时区,那么就应该一致了
继续等待
wlabing 2008-10-13
  • 打赏
  • 举报
回复
估计是你系统设置的时区与mysql中设置的时区不一致造成的.
wang_dream 2008-10-13
  • 打赏
  • 举报
回复
你系统的时间准确吗?
stenlylee 2008-10-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xqh2168 的回复:]
mysql> SELECT @@global.time_zone, @@session.time_zone;看显示的值是否是system,如果为’SYSTEM’,说明服务器时区与系统时区相同,插入应该没有问题的。如果不是system的话,重新加载时区表,试一下是否可以。
[/Quote]

是system

现在经过各种检查,JDK方面似乎也没问题,MySQL方面似乎也没问题,但是怎么两个何在一起就会出问题呢?

继续等待大家帮忙
xqh2168 2008-10-07
  • 打赏
  • 举报
回复
mysql> SELECT @@global.time_zone, @@session.time_zone;看显示的值是否是system,如果为’SYSTEM’,说明服务器时区与系统时区相同,插入应该没有问题的。如果不是system的话,重新加载时区表,试一下是否可以。
stenlylee 2008-10-06
  • 打赏
  • 举报
回复
我猜绝大多数可能问题是出在MySQL上,如果不能解决问题,大家帮忙想想,怎么能找到问题也好啊
xqh2168 2008-10-06
  • 打赏
  • 举报
回复
没有遇过这种错误
打印出来正确,那应该是mysql的问题。
stenlylee 2008-10-06
  • 打赏
  • 举报
回复
user.timezone =
我打出来了,后面没东西

真的是这个原因么?
那我怎么让后面这个固定下来?

另外,我在程序里面取时间的时候,显式地设置过了时区,然后再取时间,还是会有一样的问题出现。
iihero_ 2008-09-27
  • 打赏
  • 举报
回复
建议把java的所有系统properties打出来,看看它的时区是多少来着,
再来作决定也不迟。
懒得去死 2008-09-27
  • 打赏
  • 举报
回复
你试着直接插入数据库看时间对不对,排除一下!
iihero_ 2008-09-27
  • 打赏
  • 举报
回复
这并不表明time_zone是正确的。

相信JDBC完全是根据Java的time_zone对返回值进行加工的。
System.Properties.list(System.out)
好像有这么个函数,打出来瞅瞅。

[Quote=引用 4 楼 stenlylee 的回复:]
我的表里面有timestamp,似乎这个自动生成的值还没出过错。

我试过打印java的所有system变量了,虽然我现在忘了是多少,但是我记得是正确的

我在java里试过循环10万次输出时间,都是系统当前时间
[/Quote]
stenlylee 2008-09-27
  • 打赏
  • 举报
回复
各位帮忙想想还有什么办法能够尝试找出错误出现规律?
stenlylee 2008-09-27
  • 打赏
  • 举报
回复
我的表里面有timestamp,似乎这个自动生成的值还没出过错。

我试过打印java的所有system变量了,虽然我现在忘了是多少,但是我记得是正确的

我在java里试过循环10万次输出时间,都是系统当前时间
stenlylee 2008-09-27
  • 打赏
  • 举报
回复
如何直接插入数据库看时间?

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧