如何在Lua中捕捉sqlite3.open()错误

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

如果出现错误,函数将返回 nil、错误代码和错误消息。

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

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

如何捕获这些错误?

点赞
用户107090
用户107090

sqlite3.open 如果文件不存在就会创建文件。 因此,提供一个不存在的文件不是错误。

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

另一种错误是权限错误。 如果你运行某种 Unix,调用 sqlite3.open("/foo") 就会给你一个“权限被拒绝”的错误。

2015-02-04 01:01:59