数据库时区问题
Posted
技术标签:
【中文标题】数据库时区问题【英文标题】:time zone issue with database 【发布时间】:2019-11-24 21:12:45 【问题描述】:我在尝试与数据库 mysql 建立连接时遇到此错误
java.sql.SQLException:服务器时区值“CEST”无法识别或代表多个时区。如果要使用时区支持,则必须配置服务器或 JDBC 驱动程序(通过 serverTimezone 配置属性)以使用更具体的时区值。
与 MySQL 的连接是这样完成的:
private String CONN_STRING = "jdbc:mysql://localhost:3306/vmenginedatabaseT04P/"; // "jdbc:mysql://localhost:3306/vm_database_1";
private boolean connected ;
private Connection connection;
public boolean isConnected()
return connected;
public Connection Connect()
Connection conn = null;
try
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(CONN_STRING,USERNAME,PASSWORD);
System.out.println("Connected");
connected = true;
return conn;
catch (SQLException e)
System.err.println(e);
catch (ClassNotFoundException e)
e.printStackTrace();
return null;
【问题讨论】:
【参考方案1】:将serverTimezone=UTC
添加到您的CONN_STRING
将是这样的:
private String CONN_STRING = "jdbc:mysql://localhost:3306/vmenginedatabaseT04P?serverTimezone=UTC"; // "jdbc:mysql://localhost:3306/vm_database_1";
【讨论】:
【参考方案2】:显然,MySQL JDBC 驱动程序要使用 CEST 时区,必须在连接字符串中明确指定服务器时区。
jdbc:mysql://localhost/vmenginedatabaseT04P?serverTimezone=UTC
【讨论】:
以上是关于数据库时区问题的主要内容,如果未能解决你的问题,请参考以下文章