How to fix the error "The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server"

huangapple 未分类评论44阅读模式
英文:

How to fix the error "The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server"

问题

你好,我刚刚创建了我的应用程序,目前还是空的。我只是放了一个用于连接到我的SQL数据库的类,但是当我运行我的应用程序时,我收到了以下错误信息:

> 警告:
> com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@17460bca
> -- 获取尝试失败!正在清除待定的获取。在尝试获取所需的新资源时,我们未能成功执行超过允许的获取尝试的最大数量(30次)。上次获取尝试异常:
> com.mysql.cj.jdbc.exceptions.CommunicationsException:通信链接失败
>
> 上次成功发送给服务器的数据包距离现在已经过去了0毫秒。驱动程序没有从服务器接收到任何数据包。位于
> com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
> ……(以下为其他错误信息,省略)

这是我编写的代码:

```java
package com.luv2code.testdb;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;

@WebServlet("/TestDbServlet")
public class TestDbServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 建立与MySQL的连接:

        String user = "springstudent";
        String password = "springstudent";
        String jdbcUrl = "jdbc:mysql://localhost:3309/web_customer_tracker?useSSL=false&serverTimezone=UTC";
        String driver = "com.mysql.jdbc.Driver";

        try {

            PrintWriter out = response.getWriter();
            out.println("连接到数据库:" + jdbcUrl);

            Class.forName(driver);
            Connection cnx;
            cnx = DriverManager.getConnection(jdbcUrl, user, password);

            out.println("成功!!!!!!");

            cnx.close();
        }

        catch (Exception ex) {
            ex.printStackTrace();
            throw new ServletException(ex);
        }
    }
}

我将端口从3306更改为3309,因为在我的MySQL Workbench中,端口3306无法工作,会出现以下错误:

(图片链接1)

即使在我想要使用端口3306创建新数据库时,也会出现以下错误:

(图片链接2)

我不知道是不是这个端口问题导致了这个错误。

请帮忙解决,谢谢!


<details>
<summary>英文:</summary>

hello i just created my application it is still empty i just put a class which allows to connect to my sql database but when i run my application i get the following error:

&gt; AVERTISSEMENT:
&gt; com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@17460bca
&gt; -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more
&gt; than the maximum number of allowed acquisition attempts (30). Last
&gt; acquisition attempt exception: 
&gt; com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications
&gt; link failure
&gt; 
&gt; The last packet sent successfully to the server was 0 milliseconds
&gt; ago. The driver has not received any packets from the server. 	at
&gt; com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
&gt; 	at
&gt; com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
&gt; 	at
&gt; com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:832)
&gt; 	at com.mysql.cj.jdbc.ConnectionImpl.&lt;init&gt;(ConnectionImpl.java:456)
&gt; 	at
&gt; com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)
&gt; 	at
&gt; com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:207)
&gt; 	at
&gt; com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
&gt; 	at
&gt; com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
&gt; 	at
&gt; com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
&gt; 	at
&gt; com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)
&gt; 	at
&gt; com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
&gt; 	at
&gt; com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)
&gt; 	at
&gt; com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) 	at
&gt; com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)
&gt; 	at
&gt; com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
&gt; Caused by: com.mysql.cj.exceptions.CJCommunicationsException:
&gt; Communications link failure
&gt; 
&gt; The last packet sent successfully to the server was 0 milliseconds
&gt; ago. The driver has not received any packets from the server. 	at
&gt; sun.reflect.GeneratedConstructorAccessor34.newInstance(Unknown Source)
&gt; 	at
&gt; sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
&gt; 	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
&gt; 	at
&gt; com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
&gt; 	at
&gt; com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
&gt; 	at
&gt; com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
&gt; 	at
&gt; com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
&gt; 	at
&gt; com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:91)
&gt; 	at com.mysql.cj.NativeSession.connect(NativeSession.java:152) 	at
&gt; com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:952)
&gt; 	at
&gt; com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:822)
&gt; 	... 12 more Caused by: java.net.ConnectException: Connection refused:
&gt; connect 	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
&gt; 	at
&gt; java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
&gt; 	at
&gt; java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
&gt; 	at
&gt; java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
&gt; 	at
&gt; java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
&gt; 	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 	at
&gt; java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 	at
&gt; java.net.Socket.connect(Socket.java:589) 	at
&gt; com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:173)
&gt; 	at
&gt; com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:65)
&gt; 	... 15 more

here is the code i made :

    package com.luv2code.testdb;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.sql.*;
    /**
     * Servlet implementation class TestDbServlet
     */
    @WebServlet(&quot;/TestDbServlet&quot;)
    public class TestDbServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		
    		// &#233;tablir la connexion &#224; mysql :
    		
    		String user=&quot;springstudent&quot;;
    		String password=&quot;springstudent&quot;;
    		String jdbcUrl=&quot;jdbc:mysql://localhost:3309/web_customer_tracker?useSSL=false&amp;serverTimezone=UTC&quot;;
    		String driver=&quot;com.mysql.jdbc.Driver&quot;;
    		
    		try {
    			
    			PrintWriter out= response.getWriter();
    			out.println(&quot;Connection &#224;  la base de donn&#233;e :&quot;+jdbcUrl);
    			
    			Class.forName(driver);
    			Connection cnx;
    			cnx=DriverManager.getConnection(jdbcUrl, user, password);
    			
    			out.println(&quot;Success !!!!!!!!!&quot;);
    			
    			cnx.close();
    		}
    		
    		catch(Exception ex) {
    			ex.printStackTrace();
    			throw new ServletException(ex);
    		}
    	}
    
    }

I put port 3309 instead of 3306 because port 3306 does not work in my mysqlworkbench it gives me the following error :

[![error 1][1]][1]


and even when i want to create a new database with port 3306 it gives me the following error:

[![error 2][2]][2]

I do not know if it is this port problem that gives me this error.



help me please !!
  [1]: https://i.stack.imgur.com/D8x2C.png
  [2]: https://i.stack.imgur.com/DGuOf.png

</details>


huangapple
  • 本文由 发表于 2020年4月10日 02:33:47
  • 转载请务必保留本文链接:https://java.coder-hub.com/61127913.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定