How Can We Help You?
How to fix the “Error Establishing Database Connection” in WordPress
The Error Establishing Database Connection error is one of the most commonly experienced errors on WordPress sites. The error itself indicates that the connection between your website files and the database has dropped.
As the database is queried for most of your WordPress site’s content, this drop of connection stops any of the site content from displaying until the connection is re-established. So it’s important to address this error as soon as possible.
There are several reasons that the connection to the database may drop – the details that are being used to attempt the connection may be incorrect, or the database itself may not be loading correctly or may have been corrupted. This guide will break down the core areas to check to re-establish the connection as soon as possible and get your site loading.
Note: Take a backup of your website database before attempting any of the following solutions. You can do so using our Timeline Backups service.
1. Checking wp-config.php
In a WordPress site, the database connection details are held within a file called wp-config.php, generally located in the root folder of your WordPress site. If you navigate to this file using our File Manager or via FTP, you’ll see code such as the following:
// ** Database settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define( 'DB_NAME', 'database_name_here' ); /** Database username */ define( 'DB_USER', 'username_here' ); /** Database password */ define( 'DB_PASSWORD', 'password_here' ); /** Database hostname */ define( 'DB_HOST', 'hostname_here' ); /** Database charset to use in creating database tables. */ define( 'DB_CHARSET', 'utf8' ); /** The database collate type. Don't change this if in doubt. */ define( 'DB_COLLATE', '' );
Each section is labelled via comments that show what each area is used for.
The main details you’ll need to check here are the Database name, Database hostname, Database username and Database password. If any of these details are wrong, the connection to the database won’t be possible and you’ll need to change the details accordingly. But where do we find these database details?
Your site’s database details can be accessed and updated via your hosting package:
- Log into your Control Panel and head to your Manage Hosting area
- Select Options > Manage on the hosting package you’d wish to edit
- Head to the Web Tools section and select MySQL Databases
- Under Manage MySQL Databases you’ll see your databases and their current Server, Database/Username and an area where you can update the password
Going back to the wp-config.php file, you can use the above details to fill out and update your connection details:
- The Server is your Database hostname
- Database/Username is the Database name and Database username
- The Database password is the password you’ve added to the Change Password area.
Once these have been updated, recheck your site and the database connection error should no longer be displaying.
2. Checking the database connection
You can also use the above details to test your database connection is working. This can be useful to find out if the problem is with the details being used or if there’s something wrong with the database itself.
To do this, head to your site’s File Manager or use FTP to create a new file in the root folder of your site. You can name this whatever you’d like, but make sure that the file is saved as a .php file such as test.php.
Once done, add the following code to the file:
$host = ‘hostname’;
$user = ‘username’;
$pass = ‘pass’;
$test = mysqli_connect($host, $user, $pass);
if (!$test) {
die(‘MySQL Error: ‘ . mysqli_error());
}
echo ‘Database connection is working properly!’;
mysqli_close($test);
Replacing ‘hostname’, ‘username’ and ‘pass’ with the database hostname, database username and database password respectively.
Once that’s set up and saved, load the script via your site. If, for example, you named your file test.php you can load this by visiting your site and appending /test.php to the end of the URL i.e., domain.com/test.php.
If the script loads and displays an error, there’s a problem with the details being used. If it instead displays the line Database connection is working correctly! then the credentials being used for the database are correct.
If that’s the case, and your site is still showing a database error, then the problem may be with the database itself. It will need to be repaired.
3. Repairing a corrupt database
The issue can sometimes be that your database itself has become corrupt. This isn’t a common occurrence. However, it can happen with the amount of data, rows and tables that can be created and removed by various third-party plugins and functions.
One way to test if this is the case is to try and connect via wp-admin. If you receive the following error:
“One or more database tables are unavailable. The database may need to be repaired.”
It means that the database has been corrupted. Fortunately, there are tools that can be used to repair this, using both WordPress and PHPMyAdmin.
4. Using WordPress’ database repair tool
To access the tool WordPress provides to fix this, you’ll need to edit your wp-config.php file and add the following line of code before the line ‘/* That’s all, stop editing! Happy publishing. */’.
Define(‘WP_ALLOW_REPAIR’, true);
Once this code has been added, head to the following URL:
https://domain.com/wp-admin/maint/repair.php
Replacing “domain.com” with your domain. This will open up a repair wizard built into WordPress that will attempt to repair your database. Follow the steps in the wizard and, when it’s finished repairing, your site should come back online.
Once you’ve finished with the repair tool, remove the above line of code from your wp-config.php file.
WordPress CLI also provides a quick tool to repair the database. To access this, connect to your site via SSH and navigate to the root folder of your WordPress installation. You can then run the command:
wp db repair
This will start a full repair of the WordPress database.
5. Repairing a database with phpMyAdmin
You can also repair the database using phpMyAdmin.
To do so:
- Log into your Control Panel and head to your Manage Hosting area
- Select Options > Manage on the hosting package you’d wish to edit
- Head to the Web Tools section and select phpMyAdmin
- Select Sign-In on the database you need to repair
- You’ll be signed into phpMyAdmin. Select your database on the left, and you’ll see a selection of your database’s current tables.
- Select all of your tables with the checkbox next to each
- From the drop-down at the bottom of the screen, select Repair table
This will run the SQL REPAIR TABLE command on all of your selected tables, which will attempt to repair and remove any corruption or broken data from these tables.
6. Repairing corrupted WordPress files
In some rare instances, the issue may lie with the files of the site rather than the database itself. This can happen when the connection during an FTP upload is interrupted, or malware infects the WordPress site and modifies the core files. If this is the case, you’ll need to replace the core files of the site with a fresh copy directly from WordPress.
To do this, first head to download WordPress’ latest version – you can find this here:
https://wordpress.org/download/
Once you have a copy of these files, unzip them on your local device and remove the wp-content and wp-config.php files. Then, connect to your site via FTP and upload the folders and files to your site’s root folder, overwriting your current core files with the fresh upload.
Once done, your site should be loaded with the correct files necessary.
Alternatively, you can use the following WP CLI command after connecting via SSH to achieve this as well:
wp core download --force
There are a number of potential causes and fixes for ‘Error Establishing a Database Connection’ errors within WordPress. By making use of the above steps, you should be able to pinpoint and fix this error and bring your site back online as soon as possible. Always be sure to take a backup before attempting any form of manual change to your site files and database.