为什么可以';我是否将java连接到MySql(连接错误)?

为什么可以';我是否将java连接到MySql(连接错误)?,java,mysql,Java,Mysql,我试图连接MySql和Java,但我从这段代码中得到了这个错误 代码: 错误: Exception in thread "main" 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

我试图连接MySql和Java,但我从这段代码中得到了这个错误

代码:

错误:

Exception in thread "main" 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:836)
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
    at ConnessioneMySql.main(ConnessioneMySql.java:11)
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: 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 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
    at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
    at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89)
    at com.mysql.cj.NativeSession.connect(NativeSession.java:144)
    at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:956)
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:826)
    ... 6 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.base/sun.nio.ch.Net.connect0(Native Method)
    at java.base/sun.nio.ch.Net.connect(Net.java:503)
    at java.base/sun.nio.ch.Net.connect(Net.java:492)
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333)
    at java.base/java.net.Socket.connect(Socket.java:648)
    at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:155)
    at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63)
    ... 9 more

Process finished with exit code 1
线程“main”com.mysql.cj.jdbc.exceptions.CommunicationsException中的异常:通信链路故障 成功发送到服务器的最后一个数据包是0毫秒前的。驱动程序尚未从服务器收到任何数据包。 位于com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) 位于com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) 位于com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836) 位于com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:456) 位于com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) 位于com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) 位于java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677) 位于java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228) 位于ConnessioneMySql.main(ConnessioneMySql.java:11) 原因:com.mysql.cj.exceptions.CJCommunicationsException:通信链路故障 成功发送到服务器的最后一个数据包是0毫秒前的。驱动程序尚未从服务器收到任何数据包。 位于java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 位于java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 位于java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 位于java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) 位于java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) 在com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)上 在com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)上 在com.mysql.cj.exceptions.ExceptionFactory.createException上(ExceptionFactory.java:151) 位于com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167) 位于com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89) 位于com.mysql.cj.NativeSession.connect(NativeSession.java:144) 位于com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:956) 位于com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:826) ... 还有6个 原因:java.net.ConnectException:连接被拒绝:连接 位于java.base/sun.nio.ch.Net.connect0(本机方法) 位于java.base/sun.nio.ch.Net.connect(Net.java:503) 位于java.base/sun.nio.ch.Net.connect(Net.java:492) 位于java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588) 位于java.base/java.net.socksocketimpl.connect(socksocketimpl.java:333) 位于java.base/java.net.Socket.connect(Socket.java:648) 位于com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:155) 位于com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63) ... 9更多 进程已完成,退出代码为1 我实际上并没有使用localhost,但我只是用“localhost”替换了真正的地址

MySql正在运行

MySql版本:8.0.21

mysql连接器java版本:8.0.22

也许是防火墙的问题或者其他什么

  • 确保您有一个名为“TelegramBot”的数据库
  • 2.确保MySql服务正在运行。 您可以通过在任务管理器中选中“服务”来完成此操作

  • 修改代码: 替换此项:


  • cn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/TelegramBot“,”根“,”密码“)



    为此:



    String url=“jdbc:mysql://localhost:3306/TelegramBot?useUnicode=true&useJDBCCompliantTimeZoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";




    最后我发现这是防火墙的问题,我在vps中解决了它

    Exception in thread "main" 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:836)
        at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)
        at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
        at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
        at ConnessioneMySql.main(ConnessioneMySql.java:11)
    Caused by: com.mysql.cj.exceptions.CJCommunicationsException: 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 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
        at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
        at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
        at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
        at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
        at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89)
        at com.mysql.cj.NativeSession.connect(NativeSession.java:144)
        at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:956)
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:826)
        ... 6 more
    Caused by: java.net.ConnectException: Connection refused: connect
        at java.base/sun.nio.ch.Net.connect0(Native Method)
        at java.base/sun.nio.ch.Net.connect(Net.java:503)
        at java.base/sun.nio.ch.Net.connect(Net.java:492)
        at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333)
        at java.base/java.net.Socket.connect(Socket.java:648)
        at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:155)
        at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63)
        ... 9 more
    
    Process finished with exit code 1
    
        cn = DriverManager.getConnection(url, "root", "password");