Я пытался использовать модуль apache mod_lua для использования запросов к БД.Я использую Apache 2.4 под Linux (Debian Stretch).Что работает до сих пор:
- установлен mod_lua
- Установлен mod_dbd с драйвером postgres
- apache.conf, чтобы соединения с БД были доступны в lua
- Видимые операторы 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, потому что у меня ее пока нет.
С наилучшими пожеланиями
Даниэль