数据库时区问题

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

【讨论】:

以上是关于数据库时区问题的主要内容,如果未能解决你的问题,请参考以下文章

Mysql时区问题

数据类型“带时区的时间戳”中的时区存储

修改数据库时区问题

MySQLMySQL时区问题数据库时间相差8小时问题解决

IBM Cloud dashDB 时区

PHP date() 与时区?