Custom WordPress Database Error

UPDATE 12/31: As of WordPress version 2.3.2, users can now easily replace their Database error using wp-content/db-error.php as their error template.

If you’re a longtime WordPress user, you’re probably aware of the Database Error page which rears its not so shiny face whenever your MySQL server decides to take a bathroom break. There’s no shame in enjoying the default error page which comes prepackaged with WordPress. It simple, effective, plain, did I say plain yet? Yes it’s plain.

After noticing that 5ThirtyOne was dead in the water due to server downtime, I decided the default error page had to go.

custom wordpress error page

Fortunately, swapping the default is quite simple and something that I highly recommend to any and all WordPress users. There’s a certain sense of “professionalism” to WordPress sites which customize the smallest details to match their entire site through and through.

Where is the database error template served?

WordPress 2.0+ users can find the necessary lines to edit within ‘/wp-includes/wp-db.php’. Beginning immediately below line 307, paste the following:

/* custom error page hack
shows a custom error page and emails error instead of
showing the default wordpress database error page */
include('wp-content/themes/themename/dbase-error.php');
$error = ( !$this->show_errors ) ? '' : $this->show_errors ;
mail('admin@domain.com', 'WordPress Error', $error);
die;
/* end custom error page hack */

For a hand-holding walk-through of each snippet of code, head on over to All Forces where Melvin breaks down the little stuff. The most important details should be recognizeable above: a) the path to your custom template titled dbase-error.php, and b) the email address that WordPress should notify in case of emergency.

A simple template to get you started

Once you’ve made the appropriate edits within wp-db.php, you can now move on to creating a suitable error page to match the look and feel of your site. Below I’ve shared a little sample of code to get you started. Feel free to download a physical copy of dbase-error.php for upload.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<title>My server crashed, please call the next of kin</title>
<style type="text/css">
body {
font-family: arial, verdana, sans-serif;
font-size: 62.5%;
line-height: 1.7em;
background: #fff;
color: #333;
text-align: center;
}
a {
text-decoration: none;
outline: none;
}
#error_wrapper {
font-size: 1.3em;
margin: 2em auto 0;
text-align: left;
width: 333px;
}
.content_wrapper {
padding: 1em 0.7em 0;
}
</style>
</head>
<body>
<div id="error_wrapper">
<div class="content_wrapper">
<p>It looks as though my server has taken an unsupervised leave of absence. I may not know of its whereabouts so would you be so kind as to notify me via <a href="mailto:admin@domain.com" title="Send me an email">email</a>?</p>
</div>
</div>
</body>
</html>

I’ve chosen to embed the CSS for the sake of convenience. If your error page begins to get a little disorganized, moving your stylesheet to an external source may be a more suitable route. Make note that all references to files within WordPress must be absolute paths.

Show me yours

Now that you have a clean canvas to work with, show me what your database error message will be. Being that errors are few and far between, I’ve pasted mine below:

Unfortunately, it seems that 5ThirtyOne is suffering from a database error which prevents this WordPress driven site from delivering the content which you so desperately seek.

Rest assured that the lemmings living within the servers are hastily working to restore the MySQL database making everyone – especially me – a little less irritated.

If I broke my own site on accident, I really didn’t mean to. Change is good though right?

Let’s try to be original. If there’s one thing worse than copying someones ‘About‘ page, it’s copying someones error page. Drop your renditions in the comments.

Discuss - 22 Comments

  1. brendan says:

    Great post.. except it’s not much use to me per-say – since moving from dreamhost to (mt) I’ve not actually experienced an outage.. MySQL or otherwise. 🙂

  2. Derek says:

    Better safe than sorry. You never know. Besides, having a matching error page to boot is nice for those rainy days. Look at me. Today alone I purposely misconfigured WordPress just so the database error would display. How bad is that?

  3. brendan says:

    [quote comment=”2583″]Today alone I purposely misconfigured WordPress just so the database error would display. How bad is that?[/quote]

    Heh, I’ve been known to do such things to test an idea. Seriously though it amazes me how bad DH has got.. it used to be great.

    Like I said – it’s a great idea.

  4. Derek says:

    [quote comment=”2584″]Heh, I’ve been known to do such things to test an idea. Seriously though it amazes me how bad DH has got.. it used to be great.[/quote]

    Dh isn’t that bad. Come on now. I’m still holding out from switching over to Media Temple despite having joined 9rules.

  5. Bruce says:

    Well, it’s prettier than your 404 Derek, which folk are likely to see more often:

    “Parse error: syntax error, unexpected T_ENDIF in /home/.ghostbuster/f5thirtyone/5thirtyone.com/wp-content/themes/reboot/404.php on line 14”

    I did customize my 404, which was fun for a few moments.

  6. Derek says:

    Wow. Thanks for the reminder that I needed to get the 404 page kicking again. :p All fixed. Unfortunately it doesn’t compare to your 404 Bruce.

  7. […] Stop your database error page looking quite so plain and standard-issue with this tutorial. […]

  8. Brett says:

    Ah nice, since I can’t leave anything alone I will have to whip up something! 😉

    Not to turn this post into a hosting discussion, but I haven’t had any of these downtime problems with (mt) 😉 I have had ftp crash on me a couple times but that is about it. Go MT!

  9. […] 5ThirtyOne – Refreshing wheatgrass moments | Custom WordPress Database Error (tags: 5ThirtyOne – Refreshing wheatgrass moments | Custom WordPress Database Error howto blogging blog) […]

  10. […] Create a Custom Database Error Page. […]

  11. Amin says:

    Very nice idea, Derek, and a clear explanation of what to do to turn on the custom error page. I especially like the idea of embedding the CSS – error pages I’ve had on a commercial site I once ran sometimes had difficulty finding stylesheets, although I see now that the path should have been hardcoded in there.

    If you look at the Apple error pages they’re just delicious – don’t you think?

  12. Derek says:

    Apple definitely has one of the more style error pages that I’ve seen online. Despite what some may believe, the 404 and error pages are one of the more important elements of a website.

  13. Amin says:

    I hate to admit this, but I’ve been known to put in some silly page names just to see the Apple 404’s.

    But then again the whole of the Apple site makes me want to dive in and spend time there, ever since I became a Mac convert a few years ago after two decades of pc ownership.

    I still use pc for business, but for my stuff it’s all Mac. I have the new Macbook which is – as Americans say – fine. Went a little bit off-topic there!

  14. […] With time to kill while waiting for the site to be fixed, I implemented something that had been listed in my “someday” list – customize the WordPress database error message and have the system send you an e-mail when your blog can’t connect to your database. I hate to admit it but I actually enjoyed the downtime as it taught me a lot as well as afforded me the time to play around with something I had long wanted to do. […]

  15. Nico says:

    I think there’s a little bug in the script. Shouldn’t the script send an email with some useful information instead of the show_errors boolean? I believe this is better:

    $error = ( !$this->show_errors ) ? ” : $message ;

    –nico

  16. […] Contribute work to the web community and include a link back to your site within the distributed files. Doing so will guarantee a reciprocal link back. Give a little, receive a little in return. Example: Create a WordPress theme, a MySpace overlay, or insightful tutorials worth bookmarking. […]

  17. […] et surtout pas tellement professionnel… A force de recherche sur Internet je suis tombé sur un hack de wordpress très pratique qui en plus d’afficher une page d’erreur personnalisé permet de vous […]

  18. […] I guess everyone will agree that WordPress’s default Database Error Page sucks, so below is what you’ll have to do to make it yours (also seen here and here). […]

  19. […] I guess everyone will agree that WordPress’s default Database Error Page sucks, so below is what you’ll have to do to make it yours (also seen here and here). […]