MYSQL数据导入更改时间

MYSQL数据导入更改时间,mysql,Mysql,我对MYSQL的时区有问题。现在,我通过mysqldump转储数据,如下所示: mysqldump-uuser-ppass--tab c:/temp--skip dump date dbName 这完全符合预期,数据库中的数据与生成的.txt文件匹配。导入数据时会出现问题。为了在导入阶段解决一些外键问题,我使用以下代码: 设置外键检查=0; 将数据本地填充'c:/temp/tableName.txt'加载到表tableName中; 设置外键检查=1; 这也没有问题,除非在我检查数据库之后,所

我对MYSQL的时区有问题。现在,我通过mysqldump转储数据,如下所示:

mysqldump-uuser-ppass--tab c:/temp--skip dump date dbName
这完全符合预期,数据库中的数据与生成的.txt文件匹配。导入数据时会出现问题。为了在导入阶段解决一些外键问题,我使用以下代码:

设置外键检查=0;
将数据本地填充'c:/temp/tableName.txt'加载到表tableName中;
设置外键检查=1;
这也没有问题,除非在我检查数据库之后,所有的
时间戳都向前移动了5个小时。我知道这一定是时区的问题(我是UTC-05:00,所以轮班时间是有意义的),但我不明白应该做什么来阻止数据库假设需要进行时间轮班

在我寻找答案的过程中,我遇到了一个类似的SO问题,但问题是反向的。进口是好的,出口是转移。

此外,我看到了一些在MYSQL中查看这些信息的建议,但我不知道现在我有了这些信息该怎么办

SELECT @@global.time_zone, @@session.time_zone;
给我:

SYSTEM    +00:00
有没有一种方法可以告诉MYSQL在不更改时间戳的情况下导入?我应该改变一些时区设置吗?如果是,我应该将其更改为导入还是导出?我不打算在任何时区移动数据库

更新1

同时,在了解最佳实践之前,在使用
加载数据块
命令之前,我已经尝试了以下更改:

这解决了我的问题(我希望我的转储文件与我用来创建数据库的文件相同)。之后,我将时间更改回
-05:00
,但我不确定是否有必要。

使用
--tz utc
选项“mysqldump”。从文档中:

此选项允许在不同时区的服务器之间转储和重新加载时间戳列。mysqldump设置其连接 时区设置为UTC,并将设置时区=“+00:00”添加到转储文件中。如果没有此选项,时间戳列将在中转储和重新加载 源服务器和目标服务器的本地时区,如果服务器处于不同的时间,则可能会导致值更改 区域--tz utc还可防止因夏令时而发生变化--默认情况下启用了utc。要禁用它,请使用 --跳过utc


使用
--tz utc
--skip tz utc
不会改变任何数据文件。我正在使用
--tab
,并在单独的时间从表中加载数据。问题在于导入,而不是导出。对不起,我以前没有注意到这个选项。是否必须使用
--tab
?是的,
--tab
是必需的;这是用于数据库版本控制的。此外,如果我不使用
--tab
,我相信这个问题是没有意义的。使用
mysqldump
导出而不使用
--tab
可以使用
INSERT
语句导出,该语句不受此问题的影响。它仍然受此问题的影响,因为时间是在每个服务器的时区中解释的。这就是为什么存在
--tz utc
选项,以强制所有内容进入一个公共时区。
SET TIME_ZONE = '+00:00';