diff --git a/dbcon/joblist/crossenginestep.cpp b/dbcon/joblist/crossenginestep.cpp index 7f9f3199f..b91e83150 100644 --- a/dbcon/joblist/crossenginestep.cpp +++ b/dbcon/joblist/crossenginestep.cpp @@ -773,11 +773,16 @@ string CrossEngineStep::makeQuery() void CrossEngineStep::handleMySqlError(const char* errStr, unsigned int errCode) { ostringstream oss; - oss << errStr << "(" << errCode << ")"; - if (errCode == (unsigned int) -1) - oss << "(null pointer)"; - else - oss << "(" << errCode << ")"; + if (mysql->getErrno()) + { + oss << errStr << " (" << mysql->getErrno() << ")"; + oss << " (" << mysql->getErrorMsg() << ")"; + } + else + { + oss << errStr << " (" << errCode << ")"; + oss << " (unknown)"; + } throw IDBExcept(oss.str(), ERR_CROSS_ENGINE_CONNECT); diff --git a/dbcon/joblist/crossenginestep.h b/dbcon/joblist/crossenginestep.h index 30b715c25..ad731b384 100644 --- a/dbcon/joblist/crossenginestep.h +++ b/dbcon/joblist/crossenginestep.h @@ -70,6 +70,8 @@ public: long getFieldLength(int field) { return fieldLengths[field]; } MYSQL_FIELD* getField(int field) { return &fFields[field]; } const std::string& getError() { return fErrStr; } + unsigned int getErrno() { return mysql_errno(fCon); } + const char* getErrorMsg() { return mysql_error(fCon); } private: MYSQL* fCon;