Index: wp-includes/wp-db.php
===================================================================
--- wp-includes/wp-db.php	(revision 6387)
+++ wp-includes/wp-db.php	(working copy)
@@ -15,7 +15,7 @@
 
 class wpdb {
 
-	var $show_errors = true;
+	var $show_errors = false;
 	var $num_queries = 0;
 	var $last_query;
 	var $col_info;
@@ -170,29 +170,38 @@
 		$EZSQL_ERROR[] =
 		array ('query' => $this->last_query, 'error_str' => $str);
 
+		$error_str = "WordPress database error $str for query $this->last_query";
+		if ( $caller = $this->get_caller() )
+			$error_str .= " made by $caller";
+		error_log($error_str, 0);
+
+		// Is error output turned on or not..
+		if ( !$this->show_errors )
+			return false;
+
 		$str = htmlspecialchars($str, ENT_QUOTES);
 		$query = htmlspecialchars($this->last_query, ENT_QUOTES);
-		// Is error output turned on or not..
-		if ( $this->show_errors ) {
-			// If there is an error then take note of it
-			print "<div id='error'>
-			<p class='wpdberror'><strong>WordPress database error:</strong> [$str]<br />
-			<code>$query</code></p>
-			</div>";
-		} else {
-			return false;
-		}
+
+		// If there is an error then take note of it
+		print "<div id='error'>
+		<p class='wpdberror'><strong>WordPress database error:</strong> [$str]<br />
+		<code>$query</code></p>
+		</div>";
 	}
 
 	// ==================================================================
 	//	Turn error handling on or off..
 
-	function show_errors() {
-		$this->show_errors = true;
+	function show_errors( $show = true ) {
+		$errors = $this->show_errors;
+		$this->show_errors = $show;
+		return $errors;
 	}
 
 	function hide_errors() {
+		$show = $this->show_errors;
 		$this->show_errors = false;
+		return $show;
 	}
 
 	// ==================================================================
Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 6387)
+++ wp-includes/functions.php	(working copy)
@@ -206,11 +206,11 @@
 
 		if ( false === $value ) {
 			if ( defined( 'WP_INSTALLING' ) )
-				$wpdb->hide_errors();
+				$show = $wpdb->hide_errors();
 			// expected_slashed ($setting)
 			$row = $wpdb->get_row( "SELECT option_value FROM $wpdb->options WHERE option_name = '$setting' LIMIT 1" );
 			if ( defined( 'WP_INSTALLING' ) )
-				$wpdb->show_errors();
+				$wpdb->show_errors($show);
 
 			if ( is_object( $row) ) { // Has to be get_row instead of get_var because of funkiness with 0, false, null values
 				$value = $row->option_value;
@@ -246,10 +246,10 @@
 
 function get_alloptions() {
 	global $wpdb, $wp_queries;
-	$wpdb->hide_errors();
+	$show = $wpdb->hide_errors();
 	if ( !$options = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" ) )
 		$options = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" );
-	$wpdb->show_errors();
+	$wpdb->show_errors($show);
 
 	foreach ( $options as $option ) {
 		// "When trying to design a foolproof system,
@@ -269,10 +269,10 @@
 	$alloptions = wp_cache_get( 'alloptions', 'options' );
 
 	if ( !$alloptions ) {
-		$wpdb->hide_errors();
+		$show = $wpdb->hide_errors();
 		if ( !$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" ) )
 			$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" );
-		$wpdb->show_errors();
+		$wpdb->show_errors($show);
 		$alloptions = array();
 		foreach ( (array) $alloptions_db as $o )
 			$alloptions[$o->option_name] = $o->option_value;
@@ -913,9 +913,9 @@
 	if ( wp_cache_get('is_blog_installed') )
 		return true;
 
-	$wpdb->hide_errors();
+	$show = $wpdb->hide_errors();
 	$installed = $wpdb->get_var( "SELECT option_value FROM $wpdb->options WHERE option_name = 'siteurl'" );
-	$wpdb->show_errors();
+	$wpdb->show_errors($show);
 
 	$installed = !empty( $installed ) ? true : false;
 	wp_cache_set('is_blog_installed', $installed);
Index: wp-includes/user.php
===================================================================
--- wp-includes/user.php	(revision 6387)
+++ wp-includes/user.php	(working copy)
@@ -236,9 +236,9 @@
 function _fill_user( &$user ) {
 	global $wpdb;
 
-	$wpdb->hide_errors();
+	$show = $wpdb->hide_errors();
 	$metavalues = $wpdb->get_results($wpdb->prepare("SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id = %d", $user->ID));
-	$wpdb->show_errors();
+	$wpdb->show_errors($show);
 
 	if ( $metavalues ) {
 		foreach ( $metavalues as $meta ) {

