如何捕获 Lua 中的 sqlite3.open() 错误

How to catch sqlite3.open() errors in Lua

根据文档 (http://luasqlite.luaforge.net/lsqlite3.html#sqlite3.open)

In case of an error, the function returns nil, an error code and an error message.

但是无论我提供有效还是无效的 SQLite 文件,我总是得到相同的结果。事实上,如果我提供一个不存在的文件或一个无效的路径,我仍然会得到相同的结果。例如:

db, code, msg = sqlite3.open("foo")) 
print(db)   -- sqlite database (0x7f9ab1628598)
print(code) -- nil
print(msg)  -- nil

如何捕获这些错误?

sqlite3.open 如果文件不存在则创建一个文件。所以,提供一个不存在的文件不是错误。

提供无效路径应该是错误的。调用 sqlite3.open("/foo/bar") 可能会出错。

另一种错误是权限错误。如果您是 运行 某种类型的 Unix,则调用 sqlite3.open("/foo") 应该会给您一个 permission denied 错误。