2023-07-17 13:44:45 (UTC-03:00)
Marcel Rodrigues <marcelgmr@gmail.com>
db: get proper error messages
diff --git a/lib/ludweb/sqlite.lua b/lib/ludweb/sqlite.lua index c0dc721..029d8f2 100644 --- a/lib/ludweb/sqlite.lua +++ b/lib/ludweb/sqlite.lua @@ -23,6 +23,7 @@ const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol); const void *sqlite3_column_blob(sqlite3_stmt*, int iCol); int sqlite3_reset(sqlite3_stmt *pStmt); int sqlite3_finalize(sqlite3_stmt *pStmt); +const char *sqlite3_errmsg(sqlite3*); ]] local C = ffi.load("sqlite3") @@ -42,7 +43,10 @@ DB.__index = DB function DB:execute(sql, ...) local pstmt = ffi.new("sqlite3_stmt *[1]") local res = CODE[C.sqlite3_prepare_v2(self.db, sql, #sql, pstmt, nil)] - if res ~= "OK" then error(res) end + if res ~= "OK" then + local error_message = ffi.string(C.sqlite3_errmsg(self.db)) + error("SQLite:"..res..": "..error_message) + end local stmt = pstmt[0] local arg = {...} for i, v in ipairs(arg) do