我的环境
:运行在Ubuntu上的MySQL + Express(Node.js环境) + Vue
问题描述
前端向后端发起请求时,返回的时间存在8小时的误差,因为国内处于东八区,判断是时差问题;
问题解决
发现了问题那就一步步排查,先登录MySQL; 登陆后查询系统上MySQL实时时间
mysql -u root -p
SELECT NOW();
这里返回的结果与现实时间一致,说明MySQL时间设置没有问题。
既然MySQL的时间设置没问题,那问题就出在后端了,以Express为例,解决方法为在你的数据库配置设置里添加一行timezone的设置:
module.exports = {
mysql: {
host: 'localhost',
user: 'root',
password: '你自己的密码',
database: '你的数据库',
port: '3306',
timezone: '08:00', //新增一行,设置‘08:00’
}
}
设置完成后重启下后端,发现获取和上传时间都不存在误差问题了。
总结
首先登录MySQL确保时间与现实时间一致,若此步就不一致,优先将MySQL时间设置为与现实时间一致;
set global time_zone='+8:00';
flush privileges;
接着在你的后端将时差设置进去,问题解决。