先检查MYSQL的时区,打开一台MYSQL时区正确的机器,然后打开有问题的机器,确认是时区错误。
先打开时区正确的机器:进入MYSQL,在命令行输入:mysql -uroot -p****(root的密码),进去之后输入show variables like ‘%time_zone%’;然后回车,得到如下的显示:
+——————+——–+
| Variable_name
+——————+——–+
| system_time_zone | CST
| time_zone
+——————+——–+
2 rows in set (0.00 sec)
然后再输入select from_unixtime(1257868800);回车,得到如下结果:
+—————————+
| from_unixtime(1257868800) |
+—————————+
| 2009-11-11 00:00:00
+—————————+
1 row in set (0.00 sec)
好了,再去有问题有机器上执行相同的操作发现执行show variables like ‘%time_zone%’;得到的结果是:
+——————+——–+
| Variable_name
+——————+——–+
| system_time_zone | EDT
| time_zone
+——————+——–+
2 rows in set (0.01 sec)
执行select from_unixtime(1257868800);得到的结果是:
+—————————+
| from_unixtime(1257868800) |
+—————————+
| 2009-11-10 11:00:00
+—————————+
1 row in set (0.00 sec)
时间差了十三个小时。怎么样把时区调回我们想 要的呢?虽然网上说可以在命令行下执行set time_zone = ‘+8:00′;之后就设置了时区,但是这样的操作没有对全司有效。只是在执行这个之后再在命令行下执行其它的操作可以得到正确的数据。但是在 phpmyadmin下得到的结果还是错的。所以要修改MYSQL的配置文件来达到修改全局变量的目的。
先去找到mysql的配置文件my.cnf, 一般在/etc/my.cnf下面,可以cd /etc 然后find my.cnf找找,看能不能找到。找到之后就修改它,用VI打开:vi /etc/my.cnf,打开之后查找[mysqld],在VI输入“/”然后输入[mysqld],就定位到[mysqld]所在的位置,在它的下面加 上default-time-zone = ‘+8:00′这一行,然后保存退出,重新启动MYSQL,使时区生效。这个时候再去MYSQL下查看刚才的那两条命令,就会发现时区都设置正确了。
到此,时区不对的问题就解决了。
博文来源:http://blog.csdn.net/aidenliu/article/details/6054032