我导出mysql表进行实时设置,但在导出数据库时,我发现我的日期列值正在变化 ..如果是“2007-06- 11 00:00:00“之前导出后现在改为”2007-06-10 18:30:00“,在导出mysql数据库时,mysql表中的日期值发生了变化db
为什么这样呢?
有人有想法吗?
我导出mysql表进行实时设置,但在导出数据库时,我发现我的日期列值正在变化 ..如果是“2007-06- 11 00:00:00“之前导出后现在改为”2007-06-10 18:30:00“,在导出mysql数据库时,mysql表中的日期值发生了变化db
为什么这样呢?
有人有想法吗?
Bug #13052之前5.0.15中存在的MySQL版本,其中转储文件表示在服务器的时区TIMESTAMP
列,但并不包括SET TIME_ZONE
命令,以确保任何人(或任何后续的服务器)读取转储文件明白;如果没有这样的命令,接收服务器会假定任何TIMESTAMP
值都处于其默认时区。
因此,服务器之间的时间偏移18:30(例如从南澳大利亚到加利福尼亚)之间的转移将导致您观察到的行为。
解决这个问题,在偏好的一些模糊的顺序,包括:
升级的mysqldump的原始服务器上的版本5.0.15或更高版本(将导致转储文件中表达的所有TIMESTAMP
值以UTC表示,在开始时有合适的SET TIME_ZONE
声明);
此前出口(或进口),更改源(或目标)服务器上的全球time_zone
变量,因此,它在进口(或出口)的时间在其他服务器上的设置相匹配:
SET GLOBAL time_zone = 'America/Los_Angeles'; -- ('Australia/Adelaide')
UPDATE
事实后的数据,应用MySQL的CONVERT_TZ()
功能:
UPDATE my_table
SET my_column = CONVERT_TZ(
my_column,
'America/Los_Angeles',
'Australia/Adelaide'
);
如果全光照无论是解决方案2还是解决方案3,都要谨慎使用相关服务器的变量的时区,以便包括任何夏时制时间。但是请注意,如MySQL Server Time Zone Support所述:“只有在创建并填充了mysql数据库中的时区信息表时,才能使用命名时区”本文继续介绍如何创建和填充时区信息表。
是数据类型是'timestamp',I我看到导出文件以及新服务器上的更改,我通过phpmyadmin - >导出选项卡导出数据,mysql版本为5.0。8 – ashish
有什么方法可以纠正仅在那里的新服务器上加载的数据? – ashish