在MySQL 5.7日志时间与本地时间不一致的问题
展开阅读全文

今天在使用mysql时间戳转化成时间的函数时,出现了时间误差,12个小时的误差。sql如下:

SELECT FROM_UNIXTIME(today, '%Y-%m-%d %H ') FROM `data`

查询了好多方法,使用了好多方法,终于解决了。查询的方法如下:

在MySQL 5.7.2 新增了 log_timestamps 这个参数,该参数主要是控制 error log、genera log,等等记录日志的显示时间参数。

在 5.7.2 之后改参数为默认 UTC 这样会导致日志中记录的时间比中国这边的慢,导致查看日志不方便。修改为 SYSTEM 就能解决问题

2个办法:

1:修改【 mysqld】

log_timestamps = SYSTEM

配置文件路径(相比以前版本有变更,56路径:/etc/MySQL/my.conf)

57路径: /etc/mysql/mysql.conf.d/mysqld.cnf

重启

2:登入命令行界面:

SHOW GLOBAL VARIABLES LIKE 'log_timestamps';
+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| log_timestamps | UTC    |
+----------------+--------+
 
SET GLOBAL log_timestamps = SYSTEM;
Query OK, 0 rows affected (0.00 sec)
 
SHOW GLOBAL VARIABLES LIKE 'log_timestamps';
+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| log_timestamps | SYSTEM |
+----------------+--------+

我最终的解决方法是这个:

date命令查看时区什么都是对的但是mysql的时间就是不对

折腾了一个多小时

set global time_zone = '+08:00';

set time_zone = '+08:00'; 这些命令都测试了还是不行

后来直接修改的/etc/my.cnf的

#直接添加 重启mysql就可以了  
default-time-zone = '+08:00'