吴裕雄--天生自然 JAVA连接MYSQL:解决Mysql错误:The server time zone value is unrecognized or represents more than one time zone

编程访问Mysql数据库时,报出时区错误如下:

The server time zone value 'й' is unrecognized or represents more than one time zone
通常有以下两种解决方法:

第一,在数据库连接语句后添加?serverTimezone=UTC,即默认0时区,但是要注意,该语句需要跟在数据库连接语句的第一个位置,否则会报错,例如:

jdbc.url=jdbc:mysql://localhost:3306/testdatabase?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8

但是这会存在一个问题,在向数据库插入时间字段时,时间会比当前时间早8小时,即当前系统时间减8小时。

第二,修改Mysql的时区为东8区,执行如下命令即可:

set global time_zone='+8:00'

package pkage;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectDB {
    // 定义MySQL的数据库驱动程序
    public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
    // 定义MySQL数据库的连接地址
    public static final String DBURL = "jdbc:mysql://localhost:3306/taobao";
    // MySQL数据库的连接用户名
    public static final String DBUSER = "root";
    // MySQL数据库的连接密码
    public static final String DBPASS = "admin";

    public static void main(String[] args) {
        Connection conn = null ;        // 数据库连接
        try{
            Class.forName(DBDRIVER) ;    // 加载驱动程序
        }catch(ClassNotFoundException e){
            e.printStackTrace() ;
        }
        try{
            conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
        }catch(SQLException e){
            e.printStackTrace() ;
        }
        System.out.println(conn) ;    // 如果此时可以打印表示连接正常
        try{
            conn.close() ;            // 数据库关闭
        }catch(SQLException e){
            e.printStackTrace() ;
        }
    }
}

原文地址:https://www.cnblogs.com/tszr/p/12638916.html