mirror of
https://github.com/abraunegg/onedrive
synced 2024-05-04 15:03:24 +02:00
Enhance error logging for SqliteException
* Enhance error logging for SqliteException to include the return code in logging output to make it easier to understand why the sqlite error has occurred.
This commit is contained in:
parent
35ebdc87d4
commit
c592ba5a25
|
@ -207,12 +207,13 @@ final class ItemDatabase {
|
|||
// An error was generated - what was the error?
|
||||
if (e.msg == "database is locked") {
|
||||
addLogEntry();
|
||||
addLogEntry("ERROR: onedrive application is already running - check system process list for active application instances");
|
||||
addLogEntry("ERROR: The 'onedrive' application is already running - please check system process list for active application instances");
|
||||
addLogEntry(" - Use 'sudo ps aufxw | grep onedrive' to potentially determine acive running process", ["verbose"]);
|
||||
addLogEntry();
|
||||
} else {
|
||||
// A different error .. detail the message, detail the actual SQLite Error Code to assist with troubleshooting
|
||||
addLogEntry();
|
||||
addLogEntry("ERROR: An internal database error occurred: " ~ e.msg);
|
||||
addLogEntry("ERROR: An internal database error occurred: " ~ e.msg ~ " (SQLite Error Code: " ~ to!string(e.errorCode) ~ ")");
|
||||
addLogEntry();
|
||||
}
|
||||
return;
|
||||
|
|
17
src/sqlite.d
17
src/sqlite.d
|
@ -15,7 +15,7 @@ extern (C) immutable(char)* sqlite3_errstr(int); // missing from the std library
|
|||
|
||||
static this() {
|
||||
if (sqlite3_libversion_number() < 3006019) {
|
||||
throw new SqliteException("sqlite 3.6.19 or newer is required");
|
||||
throw new SqliteException(-1,"sqlite 3.6.19 or newer is required");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,14 +24,17 @@ private string ifromStringz(const(char)* cstr) {
|
|||
}
|
||||
|
||||
class SqliteException: Exception {
|
||||
@safe pure nothrow this(string msg, string file = __FILE__, size_t line = __LINE__, Throwable next = null)
|
||||
int errorCode; // Add an errorCode member to store the SQLite error code
|
||||
@safe pure nothrow this(int errorCode, string msg, string file = __FILE__, size_t line = __LINE__, Throwable next = null)
|
||||
{
|
||||
super(msg, file, line, next);
|
||||
this.errorCode = errorCode; // Set the errorCode
|
||||
}
|
||||
|
||||
@safe pure nothrow this(string msg, Throwable next, string file = __FILE__, size_t line = __LINE__)
|
||||
@safe pure nothrow this(int errorCode, string msg, Throwable next, string file = __FILE__, size_t line = __LINE__)
|
||||
{
|
||||
super(msg, file, line, next);
|
||||
this.errorCode = errorCode; // Set the errorCode
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -104,7 +107,7 @@ struct Database {
|
|||
}
|
||||
int rc = sqlite3_exec(pDb, "PRAGMA user_version", &callback, &userVersion, null);
|
||||
if (rc != SQLITE_OK) {
|
||||
throw new SqliteException(ifromStringz(sqlite3_errmsg(pDb)));
|
||||
throw new SqliteException(rc, ifromStringz(sqlite3_errmsg(pDb)));
|
||||
}
|
||||
return userVersion;
|
||||
}
|
||||
|
@ -129,7 +132,7 @@ struct Database {
|
|||
// https://www.sqlite.org/c3ref/prepare.html
|
||||
int rc = sqlite3_prepare_v2(pDb, zSql.ptr, cast(int) zSql.length, &s.pStmt, null);
|
||||
if (rc != SQLITE_OK) {
|
||||
throw new SqliteException(ifromStringz(sqlite3_errmsg(pDb)));
|
||||
throw new SqliteException(rc, ifromStringz(sqlite3_errmsg(pDb)));
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
@ -204,7 +207,7 @@ struct Statement {
|
|||
// https://www.sqlite.org/c3ref/bind_blob.html
|
||||
int rc = sqlite3_bind_text(pStmt, index, value.ptr, cast(int) value.length, SQLITE_STATIC);
|
||||
if (rc != SQLITE_OK) {
|
||||
throw new SqliteException(ifromStringz(sqlite3_errmsg(sqlite3_db_handle(pStmt))));
|
||||
throw new SqliteException(rc, ifromStringz(sqlite3_errmsg(sqlite3_db_handle(pStmt))));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -217,7 +220,7 @@ struct Statement {
|
|||
// https://www.sqlite.org/c3ref/reset.html
|
||||
int rc = sqlite3_reset(pStmt);
|
||||
if (rc != SQLITE_OK) {
|
||||
throw new SqliteException(ifromStringz(sqlite3_errmsg(sqlite3_db_handle(pStmt))));
|
||||
throw new SqliteException(rc, ifromStringz(sqlite3_errmsg(sqlite3_db_handle(pStmt))));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue