最近想了解一点这方面的知识,于是自己就去装了一个MySql,原因在于听说MySql比较简单一点,然后呢开源免费。先插上两张图在说话
(a) (b)
我装的MySql是最新的8.0.19,环境变量的配置就不说了,在命令行是可以工作的,我在局域网的另外一台机器上装了Navicat也是可以正常操作该服务器的。在用java连接数据库的路上出现了一些插曲。我用C#也试了,也出现问题。在这记录一下这些问题。
首先的我需要贴上代码。
public static void main(String[] args){
System.out.println("开始连接...");
Connection con = null;
String driver = "com.mysql.cj.jdbc.Driver";
String URL= "jdbc:mysql//localhost:3306/run";
String user = "root";
String password = "xy123456";
try{
Class.forName(driver);
System.out.println("连接数据库...");
con = DriverManager.getConnection(URL,user,password);
System.out.println("连接成功");
}catch(Exception e){
e.printStackTrace();
}
}
上述代码是存在问题的,稍后再说。代码写好了,在连接数据库之前还需要一样东西,就是连接服务器的驱动,就是图a中的mysql驱动。驱动有很多个版本,建议是和数据库同一个版本,我开始用的不是一个版本,在测试的时候也能连接同事的数据库。所以说是建议同个大版本。
https://www.cnblogs.com/taoweiji/archive/2012/12/11/2812295.html 这里介绍了装驱动的方法。
准备结束,执行程序。出错如下:
然后就只好google了,下面是我翻出来的一些方法。基本上都说是三个问题:
一是:连接URL格式出现了问题(Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/XX","root","XXXX")
二是:驱动字符串出错(com.mysql.jdbc.Driver)
三是:没装或者装错了驱动
很自信的越过了第一条和第二条,然后就在第三条上死磕,显示我是装了驱动,版本不对?于是下载新的驱动,还是不行。驱动装的方式不对?各种装驱动的方法都试了还是不行。我甚至重装了MySql。最后的最后发现上述代码中的url是不对的,在mysql后面少了个:。然并还是涛声依旧。然后我将url写成如下:
String URL= "jdbc:mysql//localhost:3306/run?useSSL=false&serverTimezone=UTC";完美连接了
经过几次测试发现 serverTimezone=UTC 这个设置不能少,当然不同版本的数据库设置可能不同。UTC代表的是全球标准时间 ,但是我们使用的时间是北京时区也就是东八区,领先UTC八个小时。最后的代码如下
public static void main(String[] args){
System.out.println("开始连接...");
Connection con = null;
String driver = "com.mysql.cj.jdbc.Driver";
String URL= "jdbc:mysql://localhost:3306/run?useSSL=false&serverTimezone=UTC";
String user = "root";
String password = "xy123456";
try{
Class.forName(driver);
System.out.println("连接数据库...");
con = DriverManager.getConnection(URL,user,password);
System.out.println("连接成功");
}catch(Exception e){
e.printStackTrace();
}
}
执行通过