在Lua中使用LuaSQL连接到两个不同的SQLite数据库

目标

我正在尝试连接两个不同的数据库,一个接一个地连接。 我知道第一个连接正在工作,因为我尝试创建一个新记录,它能工作。当我尝试连接到第二个数据库并查询一个表时,逻辑会失败并显示错误,说我要查询的表不存在。但是我知道它确实存在。

这是创建连接对象的测试代码:

local database1con
local database2con
local database1env
local database2env

local firstdatabase_connect = function()
   if not database1con then
      database1env = assert (luasql.sqlite3())
      database1con = assert (database1env:connect("database1.sqlite"))
      return true
   else
      return false
   end
end

local seconddatabase_connect = function()
   if not database2con then
      database2env = assert (luasql.sqlite3())
      database2con = assert (database2env:connect("database2.sqlite"))
      return true
   else
      return false
   end
end

local firstdatabase_disconnect = function()
    if database1env then
        database1env:close()
        database1env = nil
    end
    if database1con then
        database1con:close()
        database1con = nil
    end
end

local seconddatabase_disconnect = function()
    if database2env then
        database2env:close()
        database2env = nil
    end
    if database2con then
        database2con:close()
        database2con = nil
    end
end

这是实际尝试连接到数据库的逻辑:

local connected = firstdatabase_connect()
-- 运行一些选择和插入命令
firstdatabase_disconnect()

-- 现在连接到第二个数据库
sql = "INSERT INTO users VALUES("..user_id..", "..username.value..", 'test',"..os.date("%Y%m%d%H%M%S")..", Null,Null)"

local db2connected = seconddatabase_connect()
if db2connected then
    local res, err = database2con:execute(sql)
    if not res and err then
        success = false
    end
    seconddatabase_disconnect()
end

问题

插入失败,并显示以下信息:LuaSQL:no such table:users 用户表不存在于database1中,但是在database2中确实存在。

我到目前为止测试的东西

我想也许尽管我已经断开了与第一个数据库的连接,它仍然在某种程度上检查错误的数据库。因此,在调用firstdatabase_disconnect()之后,我又添加了另一条选择语句,试图从第一个数据库中选择。

系统显示database1的连接对象为空值。 这很好。

我不知道还应该测试什么。 如果您有任何建议,我会非常感激。

点赞