2016-08-25 10 views
2

Apache 2.4 업그레이드의 일부로 Python 스크립트를 lua 스크립트로 마이그레이션하고 있습니다. 요구 사항 중 하나는 Sybase 데이터베이스에 연결하고 쿼리를 실행하는 것입니다. DB 연결을 위해 mod_lua API를 사용하여 작은 코드를 개발했지만 성공하지 못했습니다.apache 2.4 - mod_lua, mod_dbd, freetds를 사용하여 Sybase 데이터베이스 연결을 얻습니다.

우리는 apr-util을 freetds와 함께 설치했습니다.

이 mod_lua, mod_dbd 및 FreeTDS를을 사용하여 데이터베이스 연결을 얻으려면 - 우리가 여기에 언급 된 단계에 따라 - http://modlua.org/api/database#dbd

은 FreeTDS를위한 DPDParams를 구성하려면를, 우리는 PARAMS가 가상 호스트에서 여기 https://httpd.apache.org/docs/2.4/mod/mod_dbd.html#DBDParams

을 언급 한 다음에 httpd.conf에, 우리는 다음과 같은 dbdparams

DBDriver의 FreeTDS를

,369을 추가 한

DBDParams는 = xxx는, 암호 = xxx는, 호스트 = 호스트의 IP 아이디 : 포트를

DBDMax 10

와 루아 코드, 단지 데이터베이스 연결을 얻기를 위해

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 

입니다 아파치 오류 로그에 나타나는 오류는 다음과 같습니다.

[Thu Aug 25 15 : 28 : 03.198044 2016] [dbd : 오류] [pid 21708 : tid 01 23,516,139621318366976] (20014) 내부 오류 (특정 정보하지 가능) : AH00629 : FreeTDS를 연결할 수 없습니다 :

[목 8월 25일 15 : 28 : 03.198145 2016] [DBD : 오류] [PID의 21708 : TID 139621318366976] (20014) 내부 오류 (특정 정보하지 가능) : AH00633 : 28 : 03.198184 2016] [루아 : 오류] [PID의 21708 : TID 139621318366976] [

[목 년 8 월 25 (15) 초기화하는 데 실패 클라이언트 10.135.15.148:52836] handle_1 처리 mod_dbd에서 연결을 얻을 수 없습니다. 데이터베이스가 인 경우 사용 권한 문제가 있음을 나타낼 수 있습니다.

우리는 동일한 시스템, 하지만 아파치 DBD의 연결에서 TSQL를 사용하여 데이터베이스에 연결할 수 있다, 작동하지 않습니다. 일부 구성 (DBDParams) 문제가 있거나 OS가 아파치와의 연결을 차단하고있는 것으로 의심됩니다.

누군가가 도와 주시겠습니까?

+0

저는 Sybase와 함께 일한 적이 없지만 TDS_Version = 5.0을 전달해야합니다 (대화 : https://github.com/FreeTDS/freetds/pull/71 참조). 'DBDParams'에 TDS 버전을 넘기는 방법을 찾을 수 있습니까? 파이썬이나 펄에서 연결할 때 연결 문자열에 TDS_Version을 포함시켜야한다는 것을 알고 있습니다. – FlipperPA

답변

0

해결책을 찾았습니다. 문제는 우리가 통과 한 DBDParams에있었습니다. sybase에 연결하기 위해 'host'매개 변수 (host =)에 연결 세부 정보 (host : port)를 제공했습니다. apr-util-freetds 코드를 자세히 살펴보면 은 Sybase 연결의 경우 호스트 포트 연결 정보 **를 제공해야하는 ** 서버 (server =) param입니다.사이베이스 연결을 사용 FreeTDS를 위해 일

http://www.freetds.org/reference/a00371.html#gaef0e7a5fcf2d8c8f795b2b06ce4de8b1

의 DBD에 Params입니다 - DBDParams는 = xxx는, 암호 = xxxxxx를 서버 = 호스트 이름 : 포트

그것의 약간의 혼란 사이베이스의 측면에서 때문에를 호스트는 일반적으로 서버 호스트 이름/ip입니다.