login

<     >

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