我們正在將我們的python腳本遷移到lua腳本中,作爲apache 2.4升級的一部分。其中一個要求是連接到Sybase數據庫並執行查詢。 要做到這一點,我們已經開發了一個使用mod_lua API來獲取數據庫連接的小代碼,但是我們還沒有成功。apache 2.4 - 使用mod_lua,mod_dbd,freetds無法獲得Sybase數據庫連接
我們已經安裝了帶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
的PARAMS在虛擬主機httpd.conf中,我們增加了以下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錯誤日誌中得到的錯誤是 -
[Thu Aug 25 15:28:03.198044 2016] [dbd:error] [pid 21708:tid 139621318366976](20014)內部錯誤(特定信息不 提供):AH00629:無法連接到freetds的:
[星期四15年8月25日:28:03.198145 2016] [DBD:錯誤] [PID 21708:TID 139621318366976](20014)內部錯誤(特定信息不 提供):AH00633:未能初始化
[星期四15年8月25日:28:03.198184 2016] [LUA:錯誤] [PID 21708:TID 139621318366976] [客戶端10.135.15.148:52836]內部處理方法_1 無法從mod_dbd獲取連接。如果您的數據庫運行的是 ,則可能表示存在權限問題。
我們能夠使用T-SQL來自同一個系統,但是來自Apache的DBD連接來連接到數據庫,不能正常工作。 我們懷疑可能有一些配置(DBDParams)問題或操作系統可能阻止來自Apache的連接
有人可以請這方面的幫助。
我從來沒有使用Sybase,但知道你必須通過TDS_Version = 5.0才能連接(請參閱https://github.com/FreeTDS/freetds/pull/71)。你能找到一種方法來通過你的'DBDParams'的TDS版本嗎?我知道從Python或Perl連接時,我需要在連接字符串中包含TDS_Version。 – FlipperPA