由于时区变化,如何解决MySQL错误?

时间:2019-04-01 12:03:22

标签: java mysql timezone

当前在欧洲,时区已更改,现在又增加了一个小时。由于某种原因,这破坏了我的脚本,并且我无法连接到mysql数据库。

我尝试重新启动,停止和启动mysql服务器,甚至重新启动eclipse。这些都不起作用。

    public static Connection getConnection() throws Exception{
        try {
            String driver = "com.mysql.cj.jdbc.Driver";
            String url = "jdbc:mysql://localhost:3306/db";
            String username = "root";
            String password = "***";
            Class.forName(driver);

            Connection DB = DriverManager.getConnection(url, username, password);
            System.out.println("Connected to Database");        
            return DB;
        } catch(Exception e) {System.out.println(e);        
        }

        return null;
    }

这在更改时间之前有效,现在我收到此错误

  

java.sql.SQLException:服务器时区值'CEST'无法识别或代表多个时区。如果要利用时区支持,必须配置服务器或JDBC驱动程序(通过serverTimezone配置属性)以使用更特定的时区值。

2 个答案:

答案 0 :(得分:1)

这可以在服务器端使用my.cnf中的显式时区设置来解决。例如,如果您的时区是欧洲/柏林:

[mysqld]
default-time-zone = Europe/Berlin

答案 1 :(得分:0)

尝试一下: String url = "jdbc:mysql://localhost:3306/db?useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";