apache 2.4-无法使用mod_lua、mod_dbd和freetds获得Sybase数据库连接

apache 2.4-无法使用mod_lua、mod_dbd和freetds获得Sybase数据库连接,lua,freetds,apache2.4,dbd,mod-lua,Lua,Freetds,Apache2.4,Dbd,Mod Lua,作为apache 2.4升级的一部分,我们正在将python脚本迁移到lua脚本。其中一个要求是连接到Sybase数据库并执行查询。 为此,我们使用mod_lua api开发了一个小代码来获得db连接,但我们没有成功 我们已经用freetds安装了apr util 要使用mod_lua、mod_dbd和freetds获得数据库连接,我们遵循这里提到的步骤- 为了为freetds配置DPDParams,我们遵循这里提到的参数 在httpd.conf的VirtualHost中,我们添加了以下db

作为apache 2.4升级的一部分,我们正在将python脚本迁移到lua脚本。其中一个要求是连接到Sybase数据库并执行查询。 为此,我们使用mod_lua api开发了一个小代码来获得db连接,但我们没有成功

我们已经用freetds安装了apr util

要使用mod_lua、mod_dbd和freetds获得数据库连接,我们遵循这里提到的步骤-

为了为freetds配置DPDParams,我们遵循这里提到的参数

在httpd.conf的VirtualHost中,我们添加了以下dbdparams

DBDriver freetds

DBDParams用户名=xxx,密码=xxx,主机=主机ip:端口

DBDMax 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错误日志中得到的错误是-

[2016年8月25日星期四15:28:03.198044][dbd:error][pid 21708:tid 139621318366976](20014)内部错误(未提供具体信息 可用):AH00629:无法连接到freetds:

[2016年8月25日星期四15:28:03.198145][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]内把手方法_1 无法从mod_dbd获取连接。如果您的数据库是 正在运行时,这可能表示权限问题

​我们能够从同一个系统使用tsql连接到数据库,但是apache dbd的连接不起作用。 我们怀疑可能存在一些配置(DBDParams)问题,或者操作系统可能正在阻止与apache的连接


有人能在这方面帮忙吗。

我们找到了解决办法。问题出在我们经过的DBDParams中。为了连接到sybase,我们在“主机”参数(主机=)中提供了连接详细信息(主机:端口)。在进一步研究apr util freetds代码时,我们发现,对于Sybase连接,应该在**server(server=)参数中提供主机端口连接详细信息**

使用freetds为Sybase连接工作的DBD参数为- DBDParams username=xxx,password=xxxxxx,server=h.o.s.t:port


这有点让人困惑,因为在sybase术语中,主机通常是服务器主机名/ip。

我从未使用过sybase,但知道必须通过TDS_Version=5.0才能连接(请参阅此处的对话:)。您能否找到一种方法,通过
DBDParams
传递TDS版本?我知道当从Python或Perl连接时,我需要在连接字符串中包含TDS_版本。