【发布时间】:2014-09-03 18:13:48
【问题描述】:
我在使用 MYSQL 时遇到问题。现在,我正在通过 mysqldump 转储数据,例如:
mysqldump -uuser -ppass --tab c:/temp --skip-dump-date dbName
这完全符合预期,数据库中的数据与生成的 .txt 文件相匹配。问题在于导入数据。为了解决导入阶段的一些外键问题,我使用了以下代码:
SET FOREIGN_KEY_CHECKS = 0;
LOAD DATA LOCAL INFILE 'c:/temp/tableName.txt' INTO TABLE tableName;
SET FOREIGN_KEY_CHECKS = 1;
这也没有问题,除了之后我检查数据库时,所有TIMESTAMPs 都向前移动了 5 小时。我知道这一定是时区的问题(我是 UTC-05:00,所以班次时间是有道理的),但我不明白应该做些什么来阻止数据库假设时间班次需要完成。
在我寻找答案的过程中,我遇到了一个类似的 SO 问题,但问题是倒退的。进口很好,出口转移了。 MySQL data export changes times
此外,我已经看到了一些在 MYSQL 中查看此信息的建议,但我不知道现在我应该如何处理这些信息。
SELECT @@global.time_zone, @@session.time_zone;
给我:
SYSTEM +00:00
有没有办法告诉 MYSQL 在不更改 TIMESTAMPs 的情况下导入?我应该更改某种时区设置吗?如果是这样,我应该将其更改为导入还是导出?我不打算跨任何时区移动数据库。
更新 1
在我知道最佳实践之前,我在使用 LOAD DATA 命令块之前直接尝试了以下更改:
SET TIME_ZONE = '+00:00';
这解决了我的问题(我希望我的转储与我用来创建数据库的文件相同)。后来我把时间改回-05:00,但不确定是否有必要。
【问题讨论】:
标签: mysql