作为 apache 2.4 升级的一部分,我们正在将我们的 python 脚本迁移到 lua 脚本。其中一项要求是连接到 Sybase 数据库并执行查询。为此,我们使用 mod_lua api 开发了一个小代码来获取数据库连接,但我们没有成功。
我们已经用 freetds 安装了 apr-util。
要使用 mod_lua、mod_dbd 和 freetds 获取数据库连接 - 我们遵循此处提到的步骤 - http://modlua.org/api/database#dbd
要为 freetds 配置 DPDParams,我们遵循此处提到的参数 https://httpd.apache.org/docs/2.4/mod/mod_dbd.html#DBDParams
在 httpd.conf 的 VirtualHost 中,我们添加了以下 dbdparams
DBDriver freetds
DBDParams username=xxx,password=xxx,host=host-ip:port
DBD最大 10
和 lua 代码,仅用于获取数据库连接
require "apache2"
require "string"
function handle(r)
r.content_type = "text/html"
local database, err = r:dbacquire("mod_dbd")
r:err("inside handle method_1 " .. err)
return apache2.OK
end
我们在 apache 错误日志中得到的错误是 -
[Thu Aug 25 15:28:03.198044 2016] [dbd:error] [pid 21708:tid 139621318366976] (20014)内部错误(具体信息不可用):AH00629:无法连接到freetds:
[Thu Aug 25 15:28:03.198145 2016] [dbd:error] [pid 21708:tid 139621318366976] (20014)内部错误(具体信息不可用):AH00633:初始化失败
[Thu Aug 25 15:28:03.198184 2016] [lua:error] [pid 21708:tid 139621318366976] [client 10.135.15.148:52836] 内部句柄 method_1 无法从 mod_dbd 获取连接。如果您的数据库正在运行,这可能表明存在权限问题。
我们可以从同一系统使用 tsql 连接到数据库,但是从 apache dbd 的连接不起作用。 我们怀疑可能存在一些配置(DBDParams)问题,或者操作系统可能阻止来自 apache 的连接
有人可以在这方面提供帮助。