前言
手贱把MySQL升级到了8.0.13,在IntelliJ IDEA中测试连接不上。因此记录一下,供个人以后参考。
系统环境
- win10x64
- jkd11
- IDEA
- MySQL 8.10.13 Community
Jar包
mysql-connector-java-8.0.14.jar
升级到最新的吧,目前最新是8.0.14
[下载地址](https://dev.mysql.com/downloads/connector/j/
选择Platform Independent就有下载地址,可以点不注册
测试连接
package cn.wahll.test;
import java.sql.DriverManager;
import java.sql.SQLException;
public class jdbcDemo {
/* jdbc:mysql://localhost:3306/库名?useSSL=false&serverTimezone=UTC
* useSSL=false在最新版的sql需要验证,然而并没有,需要设定
* serverTimezone=UTC一个时区的设定
*/
private static String url = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC";
/*注意driver改了,多了 .cj */
private static String driver = "com.mysql.cj.jdbc.Driver";
/*用户名和密码*/
private static String username = "root";
private static String password = "root";
public static void main(String[] args) throws Exception {
//反射的一个过时方法,不过比较简单,不要介意,以后也是用连接池来做的
Class.forName(driver).newInstance();
System.out.println(DriverManager.getConnection(url, username, password));
}
}
常见错误及解决方式
WARN: Establishing SSL connection without server's identity verification is not recommended.
在较高版本的 Mysql 中,引入了 SSL 安全认证,需要拥有一定的安全证书去连接数据库,而我们没有证书,所以出现此警告。
解决方式:在原数据库 url 后加上禁用 SSL 的信息
private static String url = "jdbc:mysql://localhost:3306/你的库名?useSSL=false";
The new driver class is `com.mysql.cj.jdbc.Driver'
解决驱动类路径问题 , 较新版本的驱动类的包结构发生了改变,全限定名变为 com.mysql.cj.jdbc.Driver
private static String driver = "com.mysql.cj.jdbc.Driver";
The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone.
就是要设置一个时区 , 不知道为什么 , 反正就是要设置啦
要在原 url 后附加 serverTimezone=UTC
private static String url = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC";