You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Ubuntu系统时区改为UTC+2后SQL时间与系统时区不一致求助

嘿,我来帮你搞定这个时区不匹配的问题!看起来你的SQL服务还没同步系统时区的变更,毕竟系统时区改了之后,很多服务不会自动刷新这个配置,得手动调整才行。下面是针对常见数据库的解决方案,你可以对照自己用的数据库来操作:

针对 MySQL/MariaDB 的处理步骤
  • 先确认数据库当前的时区设置:
    登录数据库后执行这条命令:SELECT @@global.time_zone, @@session.time_zone;
    如果返回的是SYSTEM但时间还是不对,大概率是服务没重启,或者需要手动指定时区。
  • 临时调整(重启服务后会失效,适合快速测试):
    全局生效(所有新会话都会用这个时区):SET GLOBAL time_zone = '+02:00';
    当前会话生效(只改你当前登录的这个连接):SET time_zone = '+02:00';
  • 永久生效(修改配置文件):
    找到MySQL的配置文件(常见路径是/etc/mysql/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf),在[mysqld]段落里添加一行:
    default-time-zone = '+02:00'
    
    保存后重启MySQL服务:sudo systemctl restart mysql
针对 PostgreSQL 的处理步骤
  • 先检查当前数据库时区:
    登录后执行:SHOW timezone;
  • 临时调整当前会话:
    SET TIME ZONE 'UTC+2';
  • 永久生效(修改配置文件):
    找到PostgreSQL的配置文件,路径一般是/etc/postgresql/<你的版本号>/main/postgresql.conf,修改timezone参数:
    timezone = 'UTC+2'
    
    保存后重启服务:sudo systemctl restart postgresql
通用排查要点
  • 先确认系统时区真的生效了:执行timedatectl命令,看输出里的Time zone是否是你想要的UTC+2时区(比如Europe/BerlinAfrica/Cairo这类具体时区名称,用名称比直接写偏移量更可靠)
  • 一定要重启SQL服务:系统时区变更后,服务不会自动感知,必须手动重启才能读取新的时区配置
  • 检查应用连接字符串:如果你的应用程序连接数据库时指定了时区参数(比如Java JDBC串里的serverTimezone),这个参数会覆盖数据库和系统的设置,得确保它和目标时区一致

内容的提问来源于stack exchange,提问作者Roy

火山引擎 最新活动