Пустой набор результатов из операторов apache mod_lua - PullRequest
0 голосов
/ 17 декабря 2018

Я пытался использовать модуль apache mod_lua для использования запросов к БД.Я использую Apache 2.4 под Linux (Debian Stretch).Что работает до сих пор:

  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

Используется база данных 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): { }

Я также попробовал «postgres» в URL и изменил подготовленные операторы просто на статические операторы.Но единственный результат, который я получаю - это набор строк (или только одна строка), но нет столбцов / значений.Было бы неплохо, если у кого-то есть идея, в чем может быть ошибка моего сценария LUA, потому что у меня ее пока нет.

С наилучшими пожеланиями

Даниэль

...