实验背景
mysql-5.7.25-winx64
mysql-connector-java-8.0.15
eclipse IDE 2019-3
问题描述
自信满满测试数据库的连接,代码看起来没有一点问题
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//测试数据库的连接
public class Demo {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/demo";
String user = "root";
String passwd = "root";
Connection conn = DriverManager.getConnection(url, user, passwd);
System.out.println(conn);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
结果现实很骨感
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
问题解决
第一条错误:加载类“com.mysql.jdbc.Driver”。这是弃用。新的驱动程序类是“com.mysql.cj.jdbc.Driver”。驱动程序是通过SPI自动注册的,通常不需要手动加载驱动程序类。
解决办法:
//源代码
Class.forName("com.mysql.jdbc.Driver");
改成:
Class.forName("com.mysql.cj.jdbc.Driver");
原因:上一个被启用,需要用新的一个
第二条错误:java.sql.SQLException:服务器时区值’?? u±e×??±??未被识别或代表多个时区。如果希望利用时区支持,必须配置服务器或JDBC驱动程序(通过serverTimezone配置属性),以使用更特殊的时区值。
解决办法:
//源代码
String url = "jdbc:mysql://localhost:3306/demo";
改成:
String url = "jdbc:mysql://localhost:3306/demo?serverTimezone=GMT";
原因:数据库和系统时区有差异,连接时,要在URL后面加上serverTimezone = GMT
原创文章,转载标注