Skip to main content

MySQL server has gone away



MySQL server has gone away for query


MySQL server has gone away for query 

[Picture 6.  pic/mta-ube.png]


Solution for “WordPress database error MySQL server has gone away for query…”

If you have a WordPress blog and it is hosted on a shared server then you may want to continue reading..
For the past six months or so, my blog has been doing weird things.. like timing out, taking ages to load pages, sometimes the login page wouldn’t appear for me, etc..
Just random events occurring now and then.. or so I thought.
Also my CPU utilisation was going through the roof, resulting in warnings from my web host to reduce it, or else risk my site going offline.
So I decided to dig a bit deeper to try to find out the root cause of these issues.

Error Log

After logging into my website one day I noticed an error_log in the /public/html directory,
So I opened it up to see what it contained,
I was quite shocked when I discovered the following error,
WordPress database error MySQL server has gone away for query…” was appearing multiple times a day, every single day..

Why This Error Appears

After digging around using Google, I eventually found this brilliant article at Rob’s Notebook called “Workaround for WordPress database error: [MySQL server has gone away] for different versions of WordPress” that provides the workaround for this error.
Rob goes on to explain why this error appears,
“When someone tries to view one of your WordPress web pages, the PHP code first opens a connection to the MySQL server. Subsequent queries to the MySQL server rely on the connection remaining open, and do not re-open the connection. If the connection to the server happened to have shut down before a query is made, then WordPress will display this error.”

Solution

Rob’s solution is to change the “wait_timeout” variable to 600 in the wp-db.php file which is located in the\wp-includes directory,
Open up this file using a text editor.. and do a search for the following text (this will bring you to the general area that needs to be edited),
  • !$this->dbh
Now copy the following,
  • $this->query("set session wait_timeout=600");
The place to insert this line is,
  1. Inside the “__construct(…)” function – see below in green
  2. And after the closing brace ‘}’ of the “if (!$this->dbh) {” statement – see below in blue
  3. Paste in $this->query("set session wait_timeout=600"); – see below in red

Now <Save> this newly modified wp-db.php file.
Done!
Since adding this, the “WordPress database error MySQL server has gone away for query…” no longer appears in my error_log..
My blog has now become more stable, more efficient and more responsive.

Future WordPress Upgrades

You will need to do this each time you upgrade WordPress.. a real pain.. but necessary to keep this error from appearing.
Full credit goes to Rob for discovering this solution!
Enjoy!





FEED






Share










SUPPORT
















VISIT COUNTER !!








ROHIT PATEL
 



Comments

Popular posts from this blog

Defacing Sites via HTML Injections (XSS)

Defacing Sites via HTML Injections Defacing Sites via HTML Injections What Is HTML Injection: "HTML Injection" is called as the Virtual Defacement Technique and also known as the "XSS" Cross Site Scripting. It is a very common vulnerability found when searched for most of the domains. This kind of a Vulnerability allows an "Attacker" to Inject some code into the applications affected in order to bypass access to the "Website" or to Infect any particular Page in that "Website". HTML injections = Cross Site Scripting, It is a Security Vulnerability in most of the sites, that allows an Attacker to Inject HTML Code into the Web Pages that are viewed by other users. XSS Attacks are essentially code injection attacks into the various interpreters in the browser. These attacks can be carried out using HTML, JavaScript, VBScript, ActiveX, Flash and other clinet side Languages. Well crafted Malicious Code can even hep the ...

EKS Cluster and Create CSI Driver to store credentials in AWS Secrets Manager via SecretProviderClass

EKS Cluster | CSI Driver | SecretProviderClass | AWS Secrets Manager Setup EKS Cluster and Manage Credentials at runtime using CSI driver using SecretProviderClass and Secrets Manager Assuming you have Configured/Installed AWS CLI, EKSCTL, KUBECTL, HELM. CSI Basic Information: CSI (Container Storage Interface) widely used as a Storage Technology. Created by Google | Mesosphere | Docker.  It has two two Plugins one runs on the Master Node (Centralized Controller Plugin) and another one on Worker Nodes (Decentralized headless Node Plugin).  CSI communication protocol is gRPC.   The communication between Container Orchestration to Controller Plugin (Master) and to Node Plugin (Worker Node) happens using gRPC .  CSI Drivers : vendor specific compiled into Kubernetes/openshift binaries. To use a CSI driver, a StorageClass needs to be assigned first.  The CSI driver is then set as the Provisioner for the Storage Class. CSI drivers provide three main service...

Linux Systems Performance/Observability (BPF (bpfcc-tools), BCC Tools

  Linux System Performance/Observability Tools Linux Systems Performance/Observability (BPF (bpfcc-tools), BCC Tools Assuming you have Linux Server in place and have the required BPF aka BCC related packages installed on the system(s) for the required Linux distribution. BPF(eBPF) aka BCC Tools (bpfcc-tools) : BPF, which originally stood for Berkley Packet Filter is the dynamic tracing tools for Linux Systems.  BPF initially used for the speeding up for the tcpdump expressions and since then it has been know as the extended Berkley packet Filter (eBPF).  Its new uses are Tracing Tools where it provides programmability for the BPF Compiler Collection (BCC) and bpftrace front ends .   Example: execsnoop, biosnoop etc is a BCC Tool. When facing production performance crisis these such list of tools comes handy to trace and fix the issue. However, it requires certain KERNEL level config options to be enabled such as CONFIG_FTRACE, CONFIG_BPF. Profiling tools typically re...