com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet success fully received from the server was 176,705,355 milliseconds ago. The last packet sent successfully to the server was 176,705,366 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
I am getting above exception when ever insert query in log4j.xml gets executed??
Related
This question already has answers here:
java.net.UnknownHostException: Invalid hostname for server: local
(14 answers)
Kafka Consumer Error - xxxx nodename nor servname provided, or not known
(1 answer)
Closed 1 year ago.
I've seen many topics with that issue but unfortunately I couldn't solve my problem. I've installed MySQL on my server (CentOS 7), I'm able to connect with my DB via shell or MySQL Workbench but when I'm trying to run my Java app, then I'm getting errors like these:
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.
Caused by: java.net.UnknownHostException: (my server's ip): nodename nor servname provided, or not known
Firewall or proxy can't block connection since I can connect with DB via Workbench or shell..
What's more, I've followed this topic: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure and:
ip address in application.properties is correct
not sure why it could be not recognized
port number is configured to 3306
my DB is running
server accept tcp/ip connections
can't run out of connections since I can connect in same time with Workbench and shell
firewall and proxy is configured to don't block these connections
any ideas what can be wrong with that?
EDIT:
My application.properties configuartion
#Database - deployment
spring.datasource.url=jdbc:mysql://xxx.xx.xxx.xxx/mydbname?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Europe/Warsaw
spring.datasource.username=mylogin
spring.datasource.password=mypassword
#Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto=create
spring.jpa.database=mysql
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Sometimes my MySQL connecting disconnects after 8 hours (standard wait_timeout value). And everytime I get the following error:
[Server thread/WARN]: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 432,896,866 milliseconds ago. The last packet sent successfully to the server was 432,897,054 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
It says that i have to set autoReconnect to true, but this is how I connect to MySQL:
final Properties prop=new Properties();
prop.setProperty("user",user);
prop.setProperty("password",password);
prop.setProperty("useSSL","true");
prop.setProperty("autoReconnect","true");
con=DriverManager.getConnection("jdbc:mysql://"+host+"/"+database,prop);
As you can see: autoReconnect is enabled, so why is my connection disconnecting and how can i fix that?
For my Springboot project I can't connect to a mysql that I had hosted on a site. With a local mysql (workbench) it works well but when I replace the localhost url with that of the host it does not work and I have the following error message:
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.
here is my code in application properties:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/word?
spring.datasource.username=root
spring.datasource.password=root
I replace the following line of code with my Database Host:
spring.datasource.url=jdbc:mysql://db.example.net:3306/word?
spring.datasource.url=jdbc:mysql://db.example.net:3306/word?
It could be many things
IPTables/firewalld based firewall on either machines
Firewall on the network
Or simply IP is not reachable
If all the above 3 is done right then it could be a config on MySQL server side to not accept remote connections. Flip that flag (and possibly restart the MySQL service)
I would start from pinging the DB IP. If that's accessible you can rule out the line number 3. Then next I would look for the aforementioned config on mysql server side.
I just received a message from the support, they don't allow connection from any IP address. Thanks for answers!
I'm a beginner to jsp & java.And I have developed a simple web application.
Application is working fine when I deploy on the server for some time.
When I try to run my Web Application after some time server returns the following message:
HTTP Status 500 - Internal Server Error
type - Exception report
message - Internal Server Error
description - The server encountered an internal error that prevented it from fulfilling this request.
exception-
javax.servlet.ServletException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 37,611,394 milliseconds ago. The last packet sent successfully to the server was 37,611,394 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
root cause -
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 37,611,394 milliseconds ago. The last packet sent successfully to the server was 37,611,394 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
root cause -
java.net.SocketException: Broken pipe
note - The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.0 logs.
GlassFish Server Open Source Edition 4.0
(Don't know what went wrong .Still searching Google but no luck yet)
probably you need to set your connection url to this.
jdbcUrl = jdbc:mysql://localhost:3306/yourdatabase?useUnicode=yes&characterEncoding=utf8&autoReconnect=true&verifyServerCertificate=false&useSSL=false
I'm trying to add a server as a failover for SQL Server and it is not using the port 1443, I'm using the port 2776. I'm trying to specify it but everything I tried didn't work. How could I do that?
private String url = "jdbc:sqlserver://server1:2776;DatabaseName=db;failoverPartner=server2";
I've tried the following configs, but none of them worked.
...failoverPartner=server2:2776
...failoverPartner=server2,2776
...failoverPartner=server2\\db
But everytime I get exception.
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host server2, port 1433 has failed. Error: "connect timed out. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host server2:2776, port 1433 has failed. Error: "null. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host server2, 2776, port 1433 has failed. Error: "null. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".
From the documentation Connecting to SQL Server with the JDBC Driver - Setting the Connection Properties documentation, property failoverPartner:
Note: The driver does not support specifying the server instance port number for the failover partner instance as part of the failoverPartner property in the connection string. However, specifying the serverName, instanceName and portNumber properties of the principal server instance and failoverPartner property of the failover partner instance in the same connection string is supported.
Worded very confusingly, but it looks like you can't specify a port number for the failover server.
From KB-2284190 From Microsoft (Applications cannot connect to a mirror partner server when using port number in the failoverPartner attribute of the connection string ) I'm pretty much reading the same:
CAUSE
Both the error messages occur due to the fact that SQL Server JDBC drivers (all versions) do not support parsing of port number for FailoverPartner connection string attribute and rely on DNS and SQL Server Browser service (for named instances only) to resolve the connection information for the partner server. In environments wherein the conditions discussed in the Symptoms sections are met, the JDBC driver is not able to resolve the partner server information and hence you get the error message discussed above.
This behavior of SQL mirroring infrastructure is by design. For this reason, Microsoft JDBC Driver version 3.0 supports failover partner attribute value only in the format <server_name>[\<SQL_Server_instance_name>].
RESOLUTION
To work around this problem, use one of the following methods in environments where database mirroring is involved:
For default instances of SQL server that are part of mirroring configuration ensure that they are listening on the default port 1433 for TCP connections.
For named instances, ensure that SQL browser service is running and port 1434 is not blocked on the network and server B is not configured as a hidden instance.
In conclusion, do one of the following:
Specify the failover server to listen on port 1433 for TCP.
Make a named instance and specify the failoverPartner as server_name\instance_name. Make sure SQL Server Browser service is running and port 1434 is not blocked .