276

I'm trying to connect to the local MySQL server but I keep getting an error.

Here is the code.

public class Connect {

    public static void main(String[] args) {
        Connection conn = null;

        try {
            String userName = "myUsername";
            String password = "myPassword";

            String url = "jdbc:mysql://localhost:3306/myDatabaseName";
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn = DriverManager.getConnection(url, userName, password);
            System.out.println("Database connection established");
        } catch (Exception e) {
            System.err.println("Cannot connect to database server");
            System.err.println(e.getMessage());
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                    System.out.println("Database Connection Terminated");
                } catch (Exception e) {}
            }
        }
    }
}

and the errors :

Cannot connect to database server
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.
com.mysql.jdbc.exceptions.jdbc4.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 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2333)
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2370)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154)
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at Connect.main(Connect.java:16)
    Caused by: java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:529)
        at java.net.Socket.connect(Socket.java:478)
        at java.net.Socket.<init>(Socket.java:375)
        at java.net.Socket.<init>(Socket.java:218)
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:294)
        ... 15 more

I've set the classpath, made sure my.cnf had the skip network option commented out.

java version is 1.2.0_26 (64 bit) mysql 5.5.14 mysql connector 5.1.17

I made sure that the user had access to my database.

Tiny
  • 27,221
  • 105
  • 339
  • 599
Anthony
  • 2,813
  • 3
  • 16
  • 9
  • 7
    Note the CausedBy at the bottom. The SQL server never accepted the connection. What happens if do (from a command line) `telnet localhost 3306`? Is the mySQL server running? – Jim Garrison Jul 28 '11 at 20:59
  • Check this post. Might help: http://stackoverflow.com/questions/15949/javatomcat-dying-database-connection – Matt MacLean Jul 28 '11 at 21:07
  • 2
    Problem solved, added a bind-address entry to my.cnf. – Anthony Jul 28 '11 at 21:28
  • What address did you put for your bind-address? – prolink007 Oct 11 '11 at 21:45
  • 4
    @Anthony You should put your comment as an answer and accept it ... – Fildor Nov 01 '11 at 17:24
  • 2
    I tried going to Windows Services in Control Panel and started mysql service and then it worked..try this solution – tinku Mar 06 '13 at 07:29
  • I got the same problem. I change the port number it will work for me. It will use somebody like me. – Aravin Apr 01 '14 at 14:27
  • In my case the query was too complex and caused MySQL to 'hang' - even when executed from outside Java code. I assume the connection simply dropped by the time query was done. – A Sharma Jan 15 '16 at 13:55
  • Disabling windows firewall worked for me. – Developine Apr 19 '17 at 10:55
  • bind-address = 192.168.0.3 #this is your local system IP Address, Run command for specific IP Address-> grant all privileges on dbname.* to dbusername@'192.168.0.3' IDENTIFIED BY 'dbpassword'; Run command for all IP Address-> grant all privileges on dbname.* to dbusername@'%' IDENTIFIED BY 'dbpassword'; – Shiv Buyya Nov 17 '18 at 06:12
  • https://youtu.be/ray3YvnIohM – user7641341 Mar 12 '22 at 07:21

25 Answers25

494

I have had the same problem in two of my programs. My error was this:

com.mysql.jdbc.exceptions.jdbc4.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.

I spent several days to solve this problem. I have tested many approaches that have been mentioned in different web sites, but non of them worked. Finally I changed my code and found out what was the problem. I'll try to tell you about different approaches and sum them up here.

While I was seeking the internet to find the solution for this error, I figured out that there are many solutions that worked for at least one person, but others say that it doesn't work for them! why there are many approaches to this error? It seems this error can occur generally when there is a problem in connecting to the server. Maybe the problem is because of the wrong query string or too many connections to the database.

So I suggest you to try all the solutions one by one and don't give up!

Here are the solutions that I found on the internet and for each of them, there is at least on person who his problem has been solved with that solution.

Tip: For the solutions that you need to change the MySQL settings, you can refer to the following files:

  • Linux: /etc/mysql/my.cnf or /etc/my.cnf (depending on the Linux distribution and MySQL package used)

  • Windows: C:\**ProgramData**\MySQL\MySQL Server 5.6\my.ini (Notice it's ProgramData, not Program Files)

Here are the solutions:

  • changing bind-address attribute:

    Uncomment bind-address attribute or change it to one of the following IPs:

     bind-address="127.0.0.1"
    

    or

     bind-address="0.0.0.0"
    
  • commenting out "skip-networking"

    If there is a skip-networking line in your MySQL config file, make it comment by adding # sign at the beginning of that line.

  • change "wait_timeout" and "interactive_timeout"

    Add these lines to the MySQL config file:

    [wait_timeout][1] = *number*
    
    interactive_timeout = *number*
    
    connect_timeout = *number*
    
  • Make sure Java isn't translating 'localhost' to [:::1] instead of [127.0.0.1]

    Since MySQL recognizes 127.0.0.1 (IPv4) but not :::1 (IPv6)

    This could be avoided by using one of two approaches:

    1. In the connection string use 127.0.0.1 instead of localhost to avoid localhost being translated to :::1

    2. Run java with the option -Djava.net.preferIPv4Stack=true to force java to use IPv4 instead of IPv6. On Linux, this could also be achieved by running (or placing it inside /etc/profile:

       export _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"
      
  • check Operating System proxy settings, firewalls and anti-virus programs

    Make sure the Firewall, or Anti-virus software isn't blocking MySQL service.

    Stop iptables temporarily on linux. If iptables are misconfigured they may allow tcp packets to be sent to mysql port, but block tcp packets from coming back on the same connection.

     # Redhat enterprise and CentOS
     systemctl stop iptables.service
     # Other linux distros
     service iptables stop
    

    Stop anti-virus software on Windows.

  • change connection string

    Check your query string. your connection string should be some thing like this:

    dbName = "my_database";
    dbUserName = "root";
    dbPassword = "";
    String connectionString = "jdbc:mysql://localhost/" + dbName + "?user=" + dbUserName + "&password=" + dbPassword + "&useUnicode=true&characterEncoding=UTF-8";
    

Make sure you don't have spaces in your string. All the connection string should be continues without any space characters.

Try to replace "localhost" with the loopback address 127.0.0.1. Also try to add port number to your connection string, like:

String connectionString = "jdbc:mysql://localhost:3306/my_database?user=root&password=Pass&useUnicode=true&characterEncoding=UTF-8";

Usually default port for MySQL is 3306.

Don't forget to change username and password to the username and password of your MySQL server.

  • update your JDK driver library file
  • test different JDK and JREs (like JDK 6 and 7)
  • don't change max_allowed_packet

"max_allowed_packet" is a variable in MySQL config file that indicates the maximum packet size, not the maximum number of packets. So it will not help to solve this error.

  • change tomcat security

change TOMCAT6_SECURITY=yes to TOMCAT6_SECURITY=no

  • use validationQuery property

use validationQuery="select now()" to make sure each query has responses

  • AutoReconnect

Add this code to your connection string:

&autoReconnect=true&failOverReadOnly=false&maxReconnects=10

Although non of these solutions worked for me, I suggest you to try them. Because there are some people who solved their problem with following these steps.

But what solved my problem?

My problem was that I had many SELECTs on database. Each time I was creating a connection and then closing it. Although I was closing the connection every time, but the system faced with many connections and gave me that error. What I did was that I defined my connection variable as a public (or private) variable for whole class and initialized it in the constructor. Then every time I just used that connection. It solved my problem and also increased my speed dramatically.

#Conclusion# There is no simple and unique way to solve this problem. I suggest you to think about your own situation and choose above solutions. If you take this error at the beginning of the program and you are not able to connect to the database at all, you might have problem in your connection string. But If you take this error after several successful interaction to the database, the problem might be with number of connections and you may think about changing "wait_timeout" and other MySQL settings or rewrite your code how that reduce number of connections.

Saeed Masoomi
  • 1,703
  • 1
  • 19
  • 33
Soheil
  • 5,229
  • 1
  • 18
  • 21
  • 3
    I added wait_timeout only, referred to http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_wait_timeout – Siddharth Apr 04 '13 at 22:06
  • Where are the variables `TOMCAT6_SECURITY` and `validationQuery`? Thanks! – Charles Wood Mar 27 '14 at 17:03
  • this link here also seems to be a lot useful: http://www.supermanhamuerto.com/doku.php?id=java:thelastpacketsuccessfullyreceivedfromserver – Prakash K Nov 09 '14 at 17:23
  • rule of thumb - if you write a code and it don't work well even if it worked before - first place to look for a problem is a **code** or **object of recent change** (like - updated mysql config). Singleton was right pattern for your problem. Highly recommend to read this book "Head First Design Patterns" to discover more. – Tom Lime Jan 13 '16 at 13:17
  • @Soheil where to add validationQuery="..." . you mean DBCP or C3P0 ? or can it be done without it – Srinath Ganesh Jan 28 '16 at 12:06
  • @Soheil You didn't mention the problem I had: I just forgot to allow the port to go trough the firewall on the server, but you helped me because you said I have to check if I have a client-side firewall. – Sainan Feb 07 '16 at 15:43
  • 2
    @Soheil Can you add "Disabling iptables temporarily", this was my problem. iptables was misconfigured and was allowing tcp packets to be sent to mysql port, but blocked tcp packets from coming back on the same connection. – Basil Musa Feb 07 '16 at 18:30
  • 1
    @Soheil thanks for the solution - for me changing the wait_timeout parameter in MySQL config did the trick! The initial value was set only to "300"! – thorinkor May 17 '16 at 10:34
  • I have also this problem. When I use JAVA with my local mysql there isn't any problem. When I use PHP with Database of remote mysql server also there isn't any problem. BUT when I use JAVA with remote mysql server it shows the exact error. – Malus Jan Jul 12 '16 at 19:35
  • 1
    After using the correct transaction manager things are really fast. Thanks. – Markus Barthlen Sep 15 '16 at 11:34
  • for your problem a connection pool would have fixed it – linqu Apr 12 '17 at 13:10
  • i used mysql not in localhost. My problem was the bind-address configuration. Thank you for your support and experience. – Marco Jan 29 '19 at 00:02
  • Where do I go to change these configurations? Is there a way to do it via Workbench – Kaleb Jan 29 '19 at 15:11
  • 29
    For me it was adding `useSSL=false&allowPublicKeyRetrieval=true` at the end of URL `jdbc:mysql://localhost:3306/cloudapp?useSSL=false&allowPublicKeyRetrieval=true` – Freeman Mar 11 '19 at 17:35
  • If you have IP address whitelisting to connect to your DB, this will be the error message when you don't have the current IP whitelisted. – craastad Mar 12 '22 at 18:04
  • In my case, the classpath for the data adapter had an error. – blearyeye Mar 21 '22 at 13:51
  • Didn't see such case here but I was able to solve the using the **connectTimeout=** parameter. (value should be > 0). My jdbc connection string works in **loadbalance** mode hence I wanted the system to work even if 1 connection is down due to network failue. With the **connectTimeout** default=0 (no timeout), the connection hangs and clients failed to launch. example: `jdbc:mysql://localhost:3306/my_database?useUnicode=yes&characterEncoding=UTF-8&connectTimeout=5` – Yossi Schwartz Jun 13 '22 at 12:15
  • i dont see any program files folder in drive C, why? – Muhammad Ali Jul 29 '22 at 17:27
  • Nothing working for me. MySQL running on Ubuntu 22.04 LTS and connecting from other machine. – Ashu Aug 15 '23 at 00:35
18

If you are using MAMP PRO, the easy fix, which I really wish I had realized before I started searching the internet for days trying to figure this out. Its really this simple...

You just have to click "Allow Network Access to MySQL" from the MAMP MySQL tab.

Really, thats it.

Oh, and you MIGHT have to still change your bind address to either 0.0.0.0 or 127.0.0.1 like outlined in the posts above, but clicking that box alone will probably solve your problems if you are a MAMP user.

P.J.
  • 295
  • 3
  • 13
  • Saved me a lot of time this did. I could feel myself reaching boiling point when I knew that this would just be a one liner solution. – Shantanu Jul 30 '15 at 08:45
  • For me the ports were completely different to what MAMP said they were on the start page. Go into the MAMP preferences and check the ports tab to see what your actual MySQL port is. – Strainy Jan 10 '16 at 20:23
  • My app worked on Windows and Ubuntu, but not on my Mac which has MAMP PRO. This is also how I got my app working on Mac. – kimbaudi Jan 10 '17 at 20:21
9

Setting the bind-address to the server's network IP instead of the localhost default, and setting privileges on my user worked for me.

my.cnf:

bind-address = 192.168.123.456

MySql Console:

GRANT ALL PRIVILEGES ON dbname.* to username@'%' IDENTIFIED BY 'password';
Kevin Lawrence
  • 741
  • 9
  • 18
5

I've just faced the same problem. It happened because the MySQL Daemon was binded to the IP of the machine, which is required to make connection with an user that has permission to connect @your_machine. In this case, the user should have permission to connect USER_NAME@MACHINE_NAME_OR_IP

I wanted remote access to my machine so I changed in my.cnf from

bind-address = MY_IP_ADDRESS

To

bind-address = 0.0.0.0

Which will allow an user from localhost AND even outside (in my case) to connect to the instance. Both below permissions will work if you bind the MySQL to 0.0.0.0:

USER_NAME@MACHINE_NAME_OR_IP

USER_NAME@localhost
Renann
  • 552
  • 1
  • 7
  • 12
5

In my case,

  1. Change the remote machine mysql configuration at /etc/mysql/my.cnf: change bind-address = 127.0.0.1 to #bind-address = 127.0.0.1

  2. On the remote machine, change mysql user permissions with GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password';

  3. IMPORTANT: restart mysql on the remote machine: sudo /etc/init.d/mysql restart

cindyxiaoxiaoli
  • 808
  • 1
  • 8
  • 18
  • After installing MySQL in Ubuntu/Debian, the setup process is secure and prevents any external access by default. These steps are always required in order to access MySQL from any remote machine. – Luis Crespo May 07 '18 at 14:26
5

In my case (I am a noob), I was testing Servlet that make database connection with MySQL and one of the Exception is the one mentioned above.

It made my head swing for some seconds but I came to realize that it was because I have not started my MySQL server in localhost.
After starting the server, the problem was fixed.

So, check whether MySQL server is running properly.

Barun
  • 4,245
  • 4
  • 23
  • 29
5

In case you are having problem with a set of Docker containers, then make sure that you do not only EXPOSE the port 3306, but as well map the port from outside the container -p 3306:3306. For docker-compose.yml:

version: '2'

services:
    mdb:
        image: mariadb:10.1
        ports:
            - "3306:3306"
        …
kaiser
  • 21,817
  • 17
  • 90
  • 110
  • 3
    relatedly, I was trying to connect using localhost or 127.0.0.1 or 0.0.0.0 or fixed ip, but needed to connect using the service name (here: `jdbc:mysql://mdb:3306/...` ) – chris.currin Nov 15 '17 at 09:09
  • 5
    Like @chris.currin mentioned it's important to provide `container_name` while accessing from another docker_container. Example `"jdbc:mysql://mysql_container:3306/db_name?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true"` – prayagupa Jun 26 '18 at 06:19
  • 1
    I was using tomcat and mysql in two different container and getting same error. After using the jdbc:mysql://mysql_container:3306/db_name. it resolved. – dheeraj kumar Jan 19 '23 at 15:52
3

In my case it was an idle timeout, that caused the connection to be dropped on the server. The connection was kept open, but not used for a long period of time. Then a client restart works, while I believe a reconnect will work as well.

A not bad solution is to have a daemon/service to ping the connection from time to time.

fuoco
  • 31
  • 2
3

As the detailed answer above says, this error can be caused by many things.

I had this problem too. My setup was Mac OSX 10.8, using a Vagrant managed VirtualBox VM of Ubuntu 12.04, with MySQL 5.5.34.

I had correctly setup port forwarding in the Vagrant config file. I could telnet to the MySQL instance both from my Mac and from within the VM. So I knew the MySQL daemon was running and reachable. But when I tried to connect over JDBC, I got the "Communications link failure" error.

In my case, the problem was solved by editing the /etc/mysql/my.cnf file. Specifically, I commented out the "#bind-address=127.0.0.1" line.

devdanke
  • 1,309
  • 15
  • 27
  • Where did you change this? Host or Vagrant MySql? – Joe Mar 28 '18 at 04:48
  • I made the config change in the guest VM, where MySQL was running. I didn't want MySQL running directly on my Mac, so I used a VM. – devdanke Apr 11 '18 at 04:14
2

The resolution provided by Soheil was successful in my case.

To clarify, the only change I needed to make was with MySQL's server configuration;

bind-address = **INSERT-IP-HERE**

I am using an external MySQL server for my application. It is a basic Debian 7.5 installation with MySQL Server 5.5 - default configuration.

IMPORTANT:

Always backup the original of any configuration files you may modify. Always take care when elevated as super user.

File

/etc/mysql/my.cnf

Line

bind-address        = 192.168.0.103 #127.0.0.1

Restart your MySQL Server service:

/usr/sbin/service mysql restart

As you can see, I simply provided the network IP of the server and commented out the default entry. Please note that simply copy and paste my solution will not work for you, unless by some miracle our hosts share the same IP.

Thanks @ Soheil

2

I know this is an old thread but I have tried numerous things and fixed my issue using the following means..

I'm developing a cross platform app on Windows but to be used on Linux and Windows servers.

A MySQL database called "jtm" installed on both systems. For some reason, in my code I had the database name as "JTM". On Windows it worked fine, in fact on several Windows systems it flew along.

On Ubuntu I got the error above time and time again. I tested it out with the correct case in the code "jtm" and it works a treat.

Linux is obviously a lot less forgiving about case sensitivity (rightly so), whereas Windows makes allowances.

I feel a bit daft now but check everything. The error message is not the best but it does seem fixable if you persevere and get things right.

thonnor
  • 1,206
  • 2
  • 14
  • 28
2

I just restarted MySQL (following a tip from here: https://stackoverflow.com/a/14238800) and it solved the issue.

I had the same issue on MacOS (10.10.2) and MySql (5.6.21) installed via homebrew.

The confusing thing was that one of my apps connected to the database fine and the other was not.

After trying many things on the app that threw the exception com.mysql.jdbc.CommunicationsException as suggested by the accepted answer of this question to no avail, I was surprised that restarting MySQL worked.

The cause of my issue might have been the following as suggested in the answer in the aforementioned link:

Are you using connection pool ? If yes, then try to restart the server. Probably few of the connections in your connection pool are in closed state.

dulon
  • 735
  • 8
  • 10
1

It happens (in my case) when there is not enough memory for MySQL. A restart fixes it, but if that's the case consider a nachine with more memory, or limit the memory taken by jvms

Bozho
  • 588,226
  • 146
  • 1,060
  • 1,140
  • Limiting the memory or just getting more memory seems like a temporary solution does it not? – Kerem Mar 18 '15 at 02:39
1

Go to Windows services in the control panel and start the MySQL service. For me it worked. When I was doing a Java EE project I got this error" Communication link failure". I restarted my system and then it worked.

After that I again got the same error even after restarting my system. Then I tried to open the MySQL command line console and login with root, even then it gave me an error.

Finally when I started the MySQL service from Windows services, it worked.

Arjan Tijms
  • 37,782
  • 12
  • 108
  • 140
tinku
  • 479
  • 8
  • 19
1

Had the same. Removing port helped in my case, so I left it as jdbc:mysql://localhost/

1

For me the solution was to change in the conf file of mysql server the parameter bind-address="127.0.0.1" or bind-address="x.x.x.x" to bind-address="0.0.0.0". Thanks.

jpenaab
  • 19
  • 1
0

If you are using hibernate, this error can be caused for keeping open a Session object more time than wait_timeout

I've documented a case in here for those who are interested.

Raul Luna
  • 1,945
  • 1
  • 17
  • 26
0

I found the solution

since MySQL need the Localhost in-order to work.

go to /etc/network/interfaces file and make sure you have the localhost configuration set there:

auto lo
iface lo inet loopback

NOW RESTART the Networking subsystem and the MySQL Services:

sudo /etc/init.d/networking restart

sudo /etc/init.d/mysql restart

Try it now

Mahmoud Zalt
  • 30,478
  • 7
  • 87
  • 83
0

It is majorly because of weak connection between mysql client and remote mysql server.

In my case it is because of flaky VPN connection.

Ankit Singhal
  • 834
  • 7
  • 8
0

In phpstorm + vagrant autoReconnect driver option helped.

gaRex
  • 4,144
  • 25
  • 37
  • got: java.sql.SQLException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. – Meetai.com Jun 29 '14 at 09:57
0

I was experiencing similar problem and the solution for my case was

  1. changing bind-address = 0.0.0.0 from 127.0.0.1
  2. changing url's localhost to localhost:3306

the thing i felt is we should never give up, i tried every options from this post and from other forums as well...happy it works @saurab

0

I faced this problem also.

As Soheil suggested, I went to php.ini file at the path C:\windows\php.ini , then I revised port number in this file.

it is on the line mysqli.default_port =..........

So I changed it in my java app as it's in the php.ini file,now it works fine with me.

PHPFan
  • 756
  • 3
  • 12
  • 46
0

For Windows :- Goto start menu write , "MySqlserver Instance Configuration Wizard" and reconfigure your mysql server instance. Hope it will solve your problem.

Himanshu Narang
  • 131
  • 2
  • 14
0

After years having the same issue and no permanent solution this is whats solved it for the past 3 weeks (which is a record in terms of error free operation)

set global wait_timeout=3600;
set global interactive_timeout=230400;

Don't forget to make this permanent if it works for you.

itpp13
  • 444
  • 2
  • 6
-4

If you are using local emulator, you have to use IP address 10.0.2.2 instead of localhost to access to your local MySQL server.

Carlos
  • 3
  • 3