目前在欧洲,时区已经改变,现在又增加了一个小时。由于某种原因,这破坏了我的脚本,我无法连接到我的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配置属性)以使用更具体的时区值。
这可以在服务器端使用my.cnf中的显式时区设置进行修复。例如,如果你的时区是欧洲/柏林:
[mysqld]
default-time-zone = Europe/Berlin
试试这个:
String url = "jdbc:mysql://localhost:3306/db?useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";