From 19cb26da92fe05f1eb1c0dd7268067cbc9b5421d Mon Sep 17 00:00:00 2001 From: Robert Knight Date: Tue, 19 Nov 2013 09:13:19 +0000 Subject: Provide more detailed error messages Use the sqlite3_errmsg() API to retrieve more specific error messages. eg. Attempting to exec 'CREATE TABLE ExistingTableName (...)' will now report 'table already exists: ExistingTableName' rather than 'SQL logic error or missing database' --- error.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'error.go') diff --git a/error.go b/error.go index 15c843e..7568505 100644 --- a/error.go +++ b/error.go @@ -4,6 +4,12 @@ import "C" type ErrNo int +type Error struct { + Code ErrNo /* The error code returned by SQLite */ + err string /* The error string returned by sqlite3_errmsg(), + this usually contains more specific details. */ +} + // result codes from http://www.sqlite.org/c3ref/c_abort.html var ( ErrError error = ErrNo(1) /* SQL error or missing database */ @@ -37,5 +43,13 @@ var ( ) func (err ErrNo) Error() string { - return errorString(err) + return Error{Code: err}.Error() +} + +func (err Error) Error() string { + if err.err != "" { + return err.err + } else { + return errorString(err) + } } -- cgit v1.2.3