diff --git a/src/common/slurmdbd_defs.c b/src/common/slurmdbd_defs.c
index 7a4fbe660b008a6474ed0ece608a5e5e63c3e210..9c4abac7af5b811833b096821fa7c9eb435c0f50 100644
--- a/src/common/slurmdbd_defs.c
+++ b/src/common/slurmdbd_defs.c
@@ -379,7 +379,7 @@ again:
 		} else {
 			fd_set_nonblocking(slurmdbd_fd);
 			if (_send_init_msg() != SLURM_SUCCESS)  {
-				error("slurmdbd: Sending DdbInit msg: %m");
+				debug2("slurmdbd: Sending DbdInit msg: %m");
 				_close_slurmdbd_fd();
 			} else {
 				debug("slurmdbd: Sent DbdInit msg");
@@ -1309,6 +1309,8 @@ static int _send_init_msg()
 	dbd_init_msg_t req;
 	int tmp_errno = SLURM_SUCCESS;
 
+	errno = tmp_errno;
+
 	buffer = init_buf(1024);
 	pack16((uint16_t) DBD_INIT, buffer);
 	req.rollback = rollback_started;
@@ -1330,6 +1332,8 @@ static int _send_init_msg()
 	rc = _get_return_code(SLURMDBD_VERSION, read_timeout);
 	if(tmp_errno)
 		errno = tmp_errno;
+	else if(rc != SLURM_SUCCESS)
+		errno = rc;
 	return rc;
 }
 
diff --git a/src/database/mysql_common.c b/src/database/mysql_common.c
index 28a3402d05956da080a2064e91eb9683150b1949..edace7f48b92520c748d6bd14e874533a30cc33d 100644
--- a/src/database/mysql_common.c
+++ b/src/database/mysql_common.c
@@ -432,7 +432,8 @@ extern int mysql_get_db_connection(MYSQL **mysql_db, char *db_name,
 						db_host = db_info->backup;
 						continue;
 					}
-					rc = SLURM_ERROR;
+					
+					rc = ESLURM_DB_CONNECTION;
 					break;
 				}
 			} else {
@@ -440,6 +441,8 @@ extern int mysql_get_db_connection(MYSQL **mysql_db, char *db_name,
 			}
 		}
 	}
+
+	errno = rc;	
 	return rc;
 }
 
diff --git a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
index 722cb4177be4aa6e42dd53e726077c135b22202f..174b6a3606b566f30403ff849e2b48ee370be283 100644
--- a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
+++ b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
@@ -526,6 +526,7 @@ static int _check_connection(mysql_conn_t *mysql_conn)
 {
 	if(!mysql_conn) {
 		error("We need a connection to run this");
+		errno = SLURM_ERROR;
 		return SLURM_ERROR;
 	} else if(!mysql_conn->db_conn
 		  || mysql_db_ping(mysql_conn->db_conn) != 0) {
@@ -533,6 +534,7 @@ static int _check_connection(mysql_conn_t *mysql_conn)
 					   mysql_db_name, mysql_db_info)
 		   != SLURM_SUCCESS) {
 			error("unable to re-connect to mysql database");
+			errno = ESLURM_DB_CONNECTION;
 			return ESLURM_DB_CONNECTION;
 		}
 	}
@@ -3614,13 +3616,15 @@ extern void *acct_storage_p_get_connection(bool make_agent, int conn_num,
 	mysql_conn->conn = conn_num;
 	mysql_conn->update_list = list_create(destroy_acct_update_object);
 
+	errno = SLURM_SUCCESS;
 	mysql_get_db_connection(&mysql_conn->db_conn,
 				mysql_db_name, mysql_db_info);
+
 	if(mysql_conn->db_conn) {
 		if(rollback) 
 			mysql_autocommit(mysql_conn->db_conn, 0);
-		errno = SLURM_SUCCESS;
 	}
+
 	return (void *)mysql_conn;
 }
 
@@ -11157,9 +11161,10 @@ extern List jobacct_storage_p_get_jobs_cond(mysql_conn_t *mysql_conn,
 					    acct_job_cond_t *job_cond)
 {
 	List job_list = NULL;
-
-	if(_check_connection(mysql_conn) != SLURM_SUCCESS)
+	
+	if(_check_connection(mysql_conn) != SLURM_SUCCESS) {
 		return NULL;
+	}
 	job_list = mysql_jobacct_process_get_jobs(mysql_conn, uid, job_cond);	
 
 	return job_list;
diff --git a/src/sacct/options.c b/src/sacct/options.c
index 9c0a37084214b8209c903ef1a706ab368cffea96..0a1d97405a24b6832cff2ee1a4ba8a1b036b49e4 100644
--- a/src/sacct/options.c
+++ b/src/sacct/options.c
@@ -926,7 +926,6 @@ void parse_command_line(int argc, char **argv)
 		xfree(acct_type);
 	} else {
 		slurm_acct_storage_init(params.opt_filein);
-		acct_db_conn = acct_storage_g_get_connection(false, 0, false);
 		
 		acct_type = slurm_get_accounting_storage_type();
 		if ((strcmp(acct_type, "accounting_storage/none") == 0)
@@ -936,6 +935,9 @@ void parse_command_line(int argc, char **argv)
 			exit(1);
 		}
 		xfree(acct_type);
+		acct_db_conn = acct_storage_g_get_connection(false, 0, false);
+		if(errno != SLURM_SUCCESS)
+			exit(1);
 	}
 
 	/* specific clusters requested? */
diff --git a/src/slurmdbd/proc_req.c b/src/slurmdbd/proc_req.c
index a34eacaffc07c4963f14f73c014a332980fa7b2d..f9029874e77abc076caebfd719a0d8783a7e8513 100644
--- a/src/slurmdbd/proc_req.c
+++ b/src/slurmdbd/proc_req.c
@@ -1167,11 +1167,11 @@ static int _get_jobs(slurmdbd_conn_t *slurmdbd_conn,
 		
 	list_msg.my_list = jobacct_storage_g_get_jobs_cond(
 		slurmdbd_conn->db_conn, *uid, &job_cond);
-	slurmdbd_free_get_jobs_msg(slurmdbd_conn->rpc_version, 
-				   get_jobs_msg);
 
 	if(errno == ESLURM_ACCESS_DENIED && !list_msg.my_list)
 		list_msg.my_list = list_create(NULL);
+	else if(!list_msg.my_list)
+		error("got this:%m");
 
 	if(job_cond.cluster_list)
 		list_destroy(job_cond.cluster_list);
@@ -1180,6 +1180,9 @@ static int _get_jobs(slurmdbd_conn_t *slurmdbd_conn,
 	if(job_cond.groupid_list)
 		list_destroy(job_cond.groupid_list);
 
+	slurmdbd_free_get_jobs_msg(slurmdbd_conn->rpc_version, 
+				   get_jobs_msg);
+
 	*out_buffer = init_buf(1024);
 	pack16((uint16_t) DBD_GOT_JOBS, *out_buffer);
 	slurmdbd_pack_list_msg(slurmdbd_conn->rpc_version, 
@@ -1196,6 +1199,7 @@ static int _get_jobs_cond(slurmdbd_conn_t *slurmdbd_conn,
 	dbd_cond_msg_t *cond_msg = NULL;
 	dbd_list_msg_t list_msg;
 	char *comment = NULL;
+	int rc = SLURM_SUCCESS;
 
 	debug2("DBD_GET_JOBS_COND: called");
 	if (slurmdbd_unpack_cond_msg(slurmdbd_conn->rpc_version, 
@@ -1208,24 +1212,30 @@ static int _get_jobs_cond(slurmdbd_conn_t *slurmdbd_conn,
 					      DBD_GET_JOBS_COND);
 		return SLURM_ERROR;
 	}
-	
+
 	list_msg.my_list = jobacct_storage_g_get_jobs_cond(
 		slurmdbd_conn->db_conn, *uid, cond_msg->cond);
 
+	if(!errno) {
+		if(!list_msg.my_list)
+			list_msg.my_list = list_create(NULL);
+		*out_buffer = init_buf(1024);
+		pack16((uint16_t) DBD_GOT_JOBS, *out_buffer);
+		slurmdbd_pack_list_msg(slurmdbd_conn->rpc_version, 
+				       DBD_GOT_JOBS, &list_msg, *out_buffer);
+	} else {
+		*out_buffer = make_dbd_rc_msg(slurmdbd_conn->rpc_version, 
+					      errno, slurm_strerror(errno), 
+					      DBD_GET_JOBS_COND);
+		rc = SLURM_ERROR;		
+	}
+
 	slurmdbd_free_cond_msg(slurmdbd_conn->rpc_version, 
 			       DBD_GET_JOBS_COND, cond_msg);
-
-	if(errno == ESLURM_ACCESS_DENIED && !list_msg.my_list)
-		list_msg.my_list = list_create(NULL);
-
-	*out_buffer = init_buf(1024);
-	pack16((uint16_t) DBD_GOT_JOBS, *out_buffer);
-	slurmdbd_pack_list_msg(slurmdbd_conn->rpc_version, 
-			       DBD_GOT_JOBS, &list_msg, *out_buffer);
 	if(list_msg.my_list)
-		list_destroy(list_msg.my_list);
+		list_destroy(list_msg.my_list);	
 	
-	return SLURM_SUCCESS;
+	return rc;
 }
 
 static int _get_probs(slurmdbd_conn_t *slurmdbd_conn, 
@@ -1234,6 +1244,7 @@ static int _get_probs(slurmdbd_conn_t *slurmdbd_conn,
 	dbd_cond_msg_t *get_msg = NULL;
 	dbd_list_msg_t list_msg;
 	char *comment = NULL;
+	int rc = SLURM_SUCCESS;
 
 	debug2("DBD_GET_PROBS: called");
 
@@ -1262,20 +1273,28 @@ static int _get_probs(slurmdbd_conn_t *slurmdbd_conn,
 	
 	list_msg.my_list = acct_storage_g_get_problems(
 		slurmdbd_conn->db_conn, *uid, get_msg->cond);
+
+	if(!errno) {
+		if(!list_msg.my_list)
+			list_msg.my_list = list_create(NULL);
+		*out_buffer = init_buf(1024);
+		pack16((uint16_t) DBD_GOT_PROBS, *out_buffer);
+		slurmdbd_pack_list_msg(slurmdbd_conn->rpc_version, 
+				       DBD_GOT_PROBS, &list_msg, *out_buffer);
+	} else {
+		*out_buffer = make_dbd_rc_msg(slurmdbd_conn->rpc_version, 
+					      errno, slurm_strerror(errno), 
+					      DBD_GET_PROBS);
+		rc = SLURM_ERROR;		
+	}
+
 	slurmdbd_free_cond_msg(slurmdbd_conn->rpc_version, 
 			       DBD_GET_PROBS, get_msg);
 
-	if(errno == ESLURM_ACCESS_DENIED && !list_msg.my_list)
-		list_msg.my_list = list_create(NULL);
-
-	*out_buffer = init_buf(1024);
-	pack16((uint16_t) DBD_GOT_PROBS, *out_buffer);
-	slurmdbd_pack_list_msg(slurmdbd_conn->rpc_version, 
-			       DBD_GOT_PROBS, &list_msg, *out_buffer);
 	if(list_msg.my_list)
 		list_destroy(list_msg.my_list);
 	
-	return SLURM_SUCCESS;
+	return rc;
 }
 
 static int _get_qos(slurmdbd_conn_t *slurmdbd_conn, 
@@ -1614,7 +1633,10 @@ static int _init_conn(slurmdbd_conn_t *slurmdbd_conn,
 	slurmdbd_conn->db_conn = acct_storage_g_get_connection(
 		false, slurmdbd_conn->newsockfd, init_msg->rollback);
 	slurmdbd_conn->rpc_version = init_msg->version;
-
+	if(errno) {
+		rc = errno;
+		comment = slurm_strerror(rc);
+	}
 end_it:
 	slurmdbd_free_init_msg(slurmdbd_conn->rpc_version, 
 			       init_msg);