apache mod_lua语句的空结果集

时间:2018-12-17 17:57:39

标签: lua apache2.4 mod-lua

我尝试使用apache mod_lua模块来使用数据库查询。我在Linux(Debian Stretch)下使用Apache 2.4。到目前为止,什么工作正常:

  1. 已安装mod_lua
  2. mod_dbd与postgres驱动程序一起安装
  3. apache.conf配置,以在lua中提供数据库连接
  4. 针对数据库的可见SQL语句(PostgreSQL 9.6)

现在出现问题:如果我使用以下代码,则会得到一行(如我想要的),但无法访问列/值:

function handle(r)
    local database, err = r:dbacquire()

    -- All fine, an active connection will be returned
    r:puts("DB active: " .. tostring(database:active()))

    if not err then
        local statement, errmsg = database:prepare(r, "SELECT name FROM mytable WHERE id = %s")

        if not errmsg then
            -- I see the SELECT statement also in the DB logs
            local results, errmsg = statement:select("myid")
            for index, row in pairs(results(0)) do
                -- receive row, but without columns :((
                r:puts( string.format(" Entry (%s): %s ", index, dump(row)) )
            end
        end
    end
end

使用的datatabse是PostgreSQL 9.6,在apache.conf中具有以下配置:

DBDriver pgsql
DBDParams "postgresql://user:password@host:port/dbname"

输出类似于以下内容:

DB active: true Entry (1): { }

如果我更改为静态SELECT,它将返回2个条目:

DB active: true Entry (1): { } Entry (2): { }

我还尝试了URL中的“ postgres”,并将准备好的语句更改为静态语句。但是我收到的唯一结果是一堆行(或只有一行),但没有列/值。如果有人有一个主意,那会很好,因为我目前还没有,这可能是我的LUA脚本的错。

最诚挚的问候

丹尼尔

0 个答案:

没有答案