我導出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