1

ゴール

2 つの異なるデータベースに次々に接続しようとしています。新しいレコードを作成しようとしたため、最初の接続が機能していることはわかっています。2 番目のデータベースに接続してテーブルをクエリしようとすると、ロジックが失敗し、クエリしているテーブルが存在しないというエラーが表示されます。しかし、私はそれが知っています。

接続オブジェクトを作成するテスト コードは次のとおりです。

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()
-- run some select & insert commands
firstdatabase_disconnect()

-- now connect to second database
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 ユーザー テーブルはデータベース 1 には存在しませんが、データベース 2 には存在します。

これまでにテストしたこと

おそらく最初のデータベースから切断していても、どういうわけか間違ったデータベースをチェックしていると思いました。そのため、firstdatabase_disconnect() を呼び出した後、最初のデータベースからの選択を試みる別の select ステートメントを追加しました。
システムは、database1 の接続オブジェクトが nil であるというメッセージで失敗しました。どっちがいい。

他に何をテストすればよいかわかりません。何か提案があれば、よろしくお願いします。

4

0 に答える 0