【问题标题】:Exporting with phpMyAdmin changes timestamps使用 phpMyAdmin 导出更改时间戳
【发布时间】:2014-07-04 15:08:34
【问题描述】:

当通过 phpMyAdmin 导出文件时,一些时间戳会延迟一小时。我该如何防止这种情况?我不希望时间戳被篡改。这是一个 screenshot 供好奇的人使用(请参阅日期。)

我认为原因可能是添加到每个导出文件中的SET time_zone = "+00:00";。

这会发生吗?这是一个已知的错误吗?

我在跑步:

-- Server version: 5.5.37-0ubuntu0.14.04.1
-- PHP Version: 5.5.9-1ubuntu4

【问题讨论】:

    标签: mysql sql phpmyadmin timestamp


    【解决方案1】:

    时代实际上并没有被“篡改”。

    MySQL 内部存储TIMESTAMP 列converted to UTC time,然后混合使用系统和会话(客户端会话)值来确定向用户显示的内容。

    您可以自己运行以下查询来检查这两个值。

    SELECT @@global.time_zone, @@session.time_zone;
    

    因此,当您的 PHPMA 脚本生成其转储时,它会指定一个会话 time_zone 变量,因此当您运行它时,MySQL 会将它们从该时区全部转换回 UTC。然后,当您将其导入另一个数据库时,它仍会将它们转换回您期望的 UTC 值。

    总结一下,如果转储中带有SET time_zone = "+00:00"; 的值都比您在通过 PHPMyAdmin 查询时看到的值“落后 1 小时”,那么只会以这种方式出现 因为通过 PHPMyAdmin 连接的时区将比 UTC 提前一小时。

    【讨论】:

    • 想我明白了。所以为了防止这种情况,我应该用相同的 time_zone = "+00:00" 同步我的开发和生产服务器?
    • 服务器所在的时区无关紧要。重要的是,当您将数据导出到文件时,您会保留时区详细信息,因此当您导入时,mysql 知道该数据所在的时区。同步它们将有助于减少任何潜在的错误。
    猜你喜欢
    • 1970-01-01
    • 2020-04-10
    • 2018-11-27
    • 2018-08-07
    • 2014-08-31
    • 2020-11-19
    • 2019-02-15
    • 2014-12-23
    • 1970-01-01
    相关资源
    最近更新 更多