MySQL时区设置和常见问题
- 2024-07-30 22:54:00
- 丁国栋
- 原创 155
今天在使用手机号登录时发现明明是有效的验证码却提示过期,排查后发现是数据库的时区不对,导致判断验证码过期的逻辑有问题。
查询时区:
select @@GLOBAL.time_zone,@@SESSION.time_zone; select @@time_zone;
临时解决办法(无需重启,但重启后失效):
show variables like '%time_zone%'; set global time_zone = '+8:00';
其中,+8:00
可以修改为SYSTEM,UTC
如果取值为SYSTEM则等同于system_time_zone
变量的值,这个是MySQL启动时从系统取的系统时区设置。
长期解决办法(重启后生效):
修改MySQL的配置文件,添加以下:
[mysqld] default-time-zone = +08:00重启MySQL生效。
值得注意的是CST
这个特殊名字,在不同的语境中含义不同,它可能是China Standard Time(GMT+8),也可能是 Central Standard Time (USA)(GMT-6),所以尽量不用CST
表示+08:00
发表评论