diff --git a/cdr/cdr_pgsql.c b/cdr/cdr_pgsql.c
index a4919d57f76e2e02b13ae8911ccf32299f877c4a..1a3f9d6de7c2123c5faea2bbe1b435b134f5a51a 100644
--- a/cdr/cdr_pgsql.c
+++ b/cdr/cdr_pgsql.c
@@ -184,15 +184,27 @@ static void pgsql_reconnect(void)
 		conn = NULL;
 	}
 
-	ast_str_set(&conn_info, 0, "host=%s port=%s dbname=%s user=%s",
-		pghostname, pgdbport, pgdbname, pgdbuser);
-
+	if (!ast_strlen_zero(pghostname)) {
+		ast_str_append(&conn_info, 0, "host=%s ", pghostname);
+	}
+	if (!ast_strlen_zero(pgdbport)) {
+		ast_str_append(&conn_info, 0, "port=%s ", pgdbport);
+	}
+	if (!ast_strlen_zero(pgdbname)) {
+		ast_str_append(&conn_info, 0, "dbname=%s ", pgdbname);
+	}
+	if (!ast_strlen_zero(pgdbuser)) {
+		ast_str_append(&conn_info, 0, "user=%s ", pgdbuser);
+	}
 	if (!ast_strlen_zero(pgappname)) {
-		ast_str_append(&conn_info, 0, " application_name=%s", pgappname);
+		ast_str_append(&conn_info, 0, "application_name=%s ", pgappname);
 	}
-
 	if (!ast_strlen_zero(pgpassword)) {
-		ast_str_append(&conn_info, 0, " password=%s", pgpassword);
+		ast_str_append(&conn_info, 0, "password=%s", pgpassword);
+	}
+	if (ast_str_strlen(conn_info) == 0) {
+		ast_log(LOG_ERROR, "Connection string is blank.\n");
+		return;
 	}
 
 	conn = PQconnectdb(ast_str_buffer(conn_info));