MySQL中的“select now()”与Linux中的“date”不同步

3

(我希望有人能够快速解决这个问题,因为这个问题出现在我的生产服务器上)

题目已经说明了问题。我曾以为MySQL的日期时间是从安装它的机器获取的...但我错了!

当前是下午2:30。

Linux显示当前时间也是下午2:30。

但是MySQL却显示是上午9:30?!?

由于数据库中的所有内容都被错误地标记了时间戳,我该怎么办呢?


运行这个 “SQL”,show variables like '%time_zone%';,输出是什么? - nos
系统时间区域 EST 和 时间区域 SYSTEM - Robert Johnstone
但是如果我在服务器上运行date命令,会得到2011年1月20日 星期四 15:22:06 GMT - Robert Johnstone
我可以执行 SET GLOBAL system_time_zone='SYSTEM' 然后重启 MySQL 吗? - Robert Johnstone
4个回答

2
请按照以下命令操作:
mv /etc/localtime /etc/localtime_original
ln -s /usr/share/zoneinfo/Asia/Singapore /etc/localtime
service mysqld restart

验证一下,现在应该没问题了。

1

看起来你想将mysql系统时区设置为UTC。添加以下行:

timezone=UTC

添加以下内容到/etc/my.cnf文件的[mysqld_safe]部分,并重新启动mysqld。

肯定是时区问题。 - Jeff Ferland

0

(有人发布了与此非常相似的内容,然后将其删除。很抱歉我一开始无法理解您的答案,我只是没有理解上下文)

使用命令行更改服务器的时区:

# export $TZ=Europe/London

然后使用以下命令重新启动mysql(RedHat/Fedora/CentOS):

# service mysqld restart

(Debian/Ubuntu):

# /etc/init.d/mysql restart

1
您可能希望确保更改在重新启动后仍然存在,方法是实际更改系统时区文件:$ echo "Europe/London" | sudo tee /etc/timezone - Ezequiel Muns

0

这可能与您的语言环境有关吗?也许其中一个从您的语言环境计算+x,而另一个只使用系统时间?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接