You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统下修改MySQL时区失效问题求助

解决MySQL my.ini时区配置不生效及API时区报错问题

我来帮你排查下my.ini时区配置不生效的问题,结合你遇到的API报错,咱们一步步解决:

  • 先确认你修改的是MySQL实际加载的my.ini文件
    很多人踩过这个坑:手动找到的my.ini不是MySQL真正读取的那个。你可以执行这条命令找到正确路径:

    # Windows系统
    mysql --help | findstr /i "Default options"
    # Linux/Mac系统
    mysql --help | grep "Default options"
    

    输出里会显示MySQL优先加载的配置文件路径,确保你修改的是这个文件。

  • 配置项必须放在[mysqld]区块下
    default-time-zone(或下划线格式default_time_zone)只有放在[mysqld]段落里才会生效,千万别放到[mysql]或者其他区块。正确的写法示例:

    [mysqld]
    # 用偏移量更稳妥,不依赖时区表
    default-time-zone = "+03:00"
    

    如果你想用Europe/Moscow这类时区名称,得先确认MySQL的时区表是否已导入——执行SELECT * FROM mysql.time_zone_name WHERE Name LIKE '%Moscow%';,如果没结果,说明时区表缺失,这时候用偏移量是更可靠的选择。

  • 修改后必须重启MySQL服务
    my.ini的配置是冷生效的,改完一定要重启MySQL服务才会加载新配置:

    • Windows:打开「服务」找到MySQL,右键选择重启
    • Linux:执行systemctl restart mysql或service mysql restart
      重启后执行SELECT @@global.time_zone;和SELECT @@session.time_zone;,确认时区已经改成你想要的值。
  • 为什么SET GLOBAL能临时生效?
    SET GLOBAL time_zone = '+3:00';是动态修改,只会作用于当前MySQL运行周期,一旦服务重启就会回到配置文件的设置(或者默认值),所以要持久化生效还是得靠my.ini配置+重启。

  • 额外解决API报错的小技巧
    如果确认MySQL时区已经设置正确,但API还是抛出那个时区不识别的异常,你可以在JDBC连接URL里直接指定时区,强制客户端使用对应时区:

    jdbc:mysql://localhost:3306/your_database?serverTimezone=Europe/Moscow&useSSL=false
    

    这样能绕过服务器时区可能存在的兼容问题,直接让客户端和服务器时区对齐。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:03:39