diff options
Diffstat (limited to 'src/mysql.c')
-rw-r--r-- | src/mysql.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/mysql.c b/src/mysql.c index c777ac6..acef21c 100644 --- a/src/mysql.c +++ b/src/mysql.c @@ -38,11 +38,11 @@ check_errno(struct dbrw_connection *conn) case CR_SERVER_LOST: case ER_SERVER_SHUTDOWN: case ER_ABORTING_CONNECTION: + dbrw_error("query failed: %s", mysql_error(mp->mysql)); sql_disconnect(conn); if (conn->state == state_error) { conn->state = state_disabled; - syslog(LOG_DAEMON|LOG_NOTICE, - "disabling MySQL connection"); + dbrw_error("disabling MySQL connection"); } break; case ER_UNKNOWN_COM_ERROR: @@ -58,9 +58,10 @@ check_errno(struct dbrw_connection *conn) case ER_FIELD_SPECIFIED_TWICE: case ER_NO_SUCH_TABLE: case ER_NOT_ALLOWED_COMMAND: + dbrw_error("query failed: %s", mysql_error(mp->mysql)); + dbrw_error("disabling MySQL connection"); sql_disconnect(conn); conn->state = state_disabled; - syslog(LOG_DAEMON|LOG_NOTICE, "disabling MySQL connection"); } } @@ -173,12 +174,17 @@ s_mysql_query(struct dbrw_connection *conn, const char *query) return -1; continue; } - if (!(mp->result = mysql_store_result(mp->mysql))) { + mp->result = mysql_store_result(mp->mysql); + if (mp->result) { + conn->state = state_result; + rc = 0; + } else if (mysql_field_count(mp->mysql)) { dbrw_error("cannot store result: %s", - mysql_error (mp->mysql)); + mysql_error(mp->mysql)); conn->state = state_error; rc = 1; - } + } else + rc = 0; break; } return rc; |