Java 连接本地数据库失败 Communications link failure
连接本地数据库失败。重现代码
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai", "root","123456"); Statement sql = conn.createStatement(); ResultSet res = sql.executeQuery("select * from api_info "); System.out.println("ResultSet" + res.toString());
用Java11.0.12运行,出现如下错误:
C:\interfaceui>"C:\Program Files\Java\jdk-11.0.12\bin\java.exe" -jar interfaceUI.jar Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) at org.springframework.boot.loader.Launcher.launch(Launcher.java:51) at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52) Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835) at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:455) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:207) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228) at com.github.alenfive.rocketapi.RocketAPIApplication.main(RocketAPIApplication.java:17) ... 8 more Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
解决方案:更换jdk版本。目前我使用的是11.0.5.
根本原因未知。有没有大神告诉一下根本原因?
经过证实,连接远程数据库没有问题,就本地数据库有问题,使用ip地址或者localhost都不行。