无法创建与数据库服务器MySQL 8.0的连接

时间:2018-11-08 17:19:41

标签: java mysql jdbc

此错误已经在论坛中处理过几次,但是在更新到MySQL 8.0后我第一次遇到该错误,并且以前版本提出的解决方案不起作用。 但是,我发现了两种防止错误的方法:

  • 从控制台窗口运行MySQL并退出。
  • 启动工作台,然后单击“本地实例MySQL57”(此名称在更新后未更改。)再次关闭工作台。

这样做,在重新启动PC之前不会再发生该错误。 启动“计算机管理”(Win10)并查看服务,我在PC启动后立即看到状态为“正在运行”的“ MySQL80”。这样看来还可以。

我正在使用MySQL Server版本:8.0.12 和mysql-connector-java 8.0.12。

这是我用来获得连接的Java代码。对于8.0,我必须添加时区信息才能使其正常工作。看看我还测试了哪些其他标志。

import java.sql.*;
import java.util.*;

public class Test {
  String url= "jdbc:mysql://localhost/myDb?autoReconnect=true&useSSL=false";

  public Test() {
    try {
      Connection conn= DriverManager.getConnection(url+"&serverTimezone=CET",
//  "&useJDBCCompliantTimezoneShift=true"+
//  "&useUnicode=true&characterEncoding=UTF-8"+
//  "&zeroDateTimeBehavior=CONVERT_TO_NULL",
    "root",
    "mypass");
      System.out.println(conn);
    }
    catch(SQLException e) {
      System.out.println(e);
    }
    System.exit(0);
  }


  public static void main(String args[]) {
    EventQueue.invokeLater(Test::new);
  }

}

编辑: 刚刚更新到服务器和J / Connector 8.0.13,但是java.sql.SQLNonTransientConnectionException仍然存在。

1 个答案:

答案 0 :(得分:1)

在我给定的测试用例中,必须删除“&useSSL = false”。

在Connector / J 8.0中,“ useSSL”已由“ sslMode”替换,并且“ useSSL”确实已被弃用。但是对我而言,“已弃用”并不意味着“非法”。现在我们知道了:提防弃用!

至少在我的位置(中欧)指定serverTimezone似乎是必须的(运行时错误)。