자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi FireDAC - PostgreSQL 연동 과정에서 64비트 문제 발생
2019.02.13 14:58
안녕하세요.
RAD STUDIO 10.3에서 window-64bit 프로그램 만드는 중, FireDAC으로 PostgreSQL(PG) 64bit에 연결하다 문제가 생겼습니다.
다음과 같은 상황에서 에러가 발생합니다.
0. File - new - multi-device application Delphi - Blank application에서 window-64bit로 설정합니다.
1. TFDConnection을 통해 PG에 연결합니다. Property에 Drivers: PG 를 넣고 Connected : True 한 후, ID/PW를 입력합니다.
2. [PGSQL]-314. Cannot load vendor library [LIBPQ.DLL]. : "모듈을 찾을 수 없습니다"가 발생했습니다.
3. 검색해보니 아래 글이 나왔습니다. FireDac 쓰려면 libpg를 포함한 모듈을 환경 변수에 설정하라고 합니다.
http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_PostgreSQL_(FireDAC)
4. 시킨 대로 환경 변수에 PG\bin을 넣어 줍니다. 그랬더니 이번에는 같은 에러가 발생하는데 에러 메시지가 달라집니다.
[PGSQL]-314. Cannot load vendor library [LIBPQ.DLL]. : "~은 올바른 응용 프로그램이 아닙니다"
5. 몇 차례 실험해본 결과, PostgreSQL을 32bit로 재설치한 후 (원래는 64bit), RAD-studio를 재설치해서 window-32 bit만 설치하면 에러가 발생하지 않습니다. RAD Studio가 깔려 있는 폴더가 32비트 (x86) 쪽인 걸 보고 이렇게 시도해보니까 그때서야 Connected True가 됩니다.
둘 중 하나라도 64로 두면 에러가 발생합니다.
왜 32로 맞추어져야 하는지, 64는 PG 연결 지원이 불가능한 것인지가 궁금합니다.
==================================================================
19.02.15 업데이트
PG 64bit 연동할 때, bin 폴더 외에 lib 폴더에도 dll이 있는걸 발견했습니다.
환경변수를 이쪽 패스로 잡아 주었더니 첫 단계에서 TRUE로 연결이 됩니다.
그러나 런 버튼 누르면 여전히 다음과 같은 메세지가 나오고 안 됩니다.
댓글 5
-
c2design
2019.02.14 18:09
-
정한결
2019.02.15 12:03
답변 감사합니다. 처음 시도할 때에 PG를 64bit로 깔았고, 그 PG 폴더의 bin에다가 환경변수를 설정해 주었습니다. c2님의 말대로라면 64bit PG에 32bit dll이 있다는게 되는데.. 아마 그건 아닌 것 같습니다.
-
happy
2019.02.15 16:07
-
정한결
2019.02.21 13:29
답변 감사합니다! 잘 읽어봤습니다. 저는 64비트를 설정하고 깔면 IDE도 64비트가 되는 줄 알았습니다...
답해주신분이 "64비트 OLE DB 프로바이더 액세스는 구조적으로 안되죠".. 라고 하셨는데, 그러면 64비트 프로그램은 PG를 이용해서 만들 수가 없는 거겠네요. 저 스크린샷에 나온 런타임 에러를 해결을 할 수가 없는거구요. 의문 해결 감사합니다.
-
험프리
2019.02.22 09:17
32비트, 64비트 2가지 라이브러리(dll)를 모두 사용해야 합니다.
RAD 스튜디오 IDE는 32비트입니다. IDE에서 32비트 라이브러리를 참고하고, 64비트 프로젝트의 실행파일은 64비트 라이브러리를 참조해야 합니다.
[라이브러리 설치 방법은]
32비트 라이브러리는 RAD 스튜디오 IDE 실행파일(bds.exe)과 같은 디렉토리에 설치하시고,
64비트 라이브러리는 64비트 프로젝트 실행파일과 같은 디렉토리에 설치하시기 바랍니다.
배포시에는 64비트 라이브러리를 실행파일과 같은 경로 또는 시스템 패스에 등록된 경로에 배포하시기 바랍니다.
——————
답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.
(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
Delphi FireDAC - PostgreSQL 연동 과정에서 64비트 문제 발생
2019.02.13 14:58
안녕하세요.
RAD STUDIO 10.3에서 window-64bit 프로그램 만드는 중, FireDAC으로 PostgreSQL(PG) 64bit에 연결하다 문제가 생겼습니다.
다음과 같은 상황에서 에러가 발생합니다.
0. File - new - multi-device application Delphi - Blank application에서 window-64bit로 설정합니다.
1. TFDConnection을 통해 PG에 연결합니다. Property에 Drivers: PG 를 넣고 Connected : True 한 후, ID/PW를 입력합니다.
2. [PGSQL]-314. Cannot load vendor library [LIBPQ.DLL]. : "모듈을 찾을 수 없습니다"가 발생했습니다.
3. 검색해보니 아래 글이 나왔습니다. FireDac 쓰려면 libpg를 포함한 모듈을 환경 변수에 설정하라고 합니다.
http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_PostgreSQL_(FireDAC)
4. 시킨 대로 환경 변수에 PG\bin을 넣어 줍니다. 그랬더니 이번에는 같은 에러가 발생하는데 에러 메시지가 달라집니다.
[PGSQL]-314. Cannot load vendor library [LIBPQ.DLL]. : "~은 올바른 응용 프로그램이 아닙니다"
5. 몇 차례 실험해본 결과, PostgreSQL을 32bit로 재설치한 후 (원래는 64bit), RAD-studio를 재설치해서 window-32 bit만 설치하면 에러가 발생하지 않습니다. RAD Studio가 깔려 있는 폴더가 32비트 (x86) 쪽인 걸 보고 이렇게 시도해보니까 그때서야 Connected True가 됩니다.
둘 중 하나라도 64로 두면 에러가 발생합니다.
왜 32로 맞추어져야 하는지, 64는 PG 연결 지원이 불가능한 것인지가 궁금합니다.
==================================================================
19.02.15 업데이트
PG 64bit 연동할 때, bin 폴더 외에 lib 폴더에도 dll이 있는걸 발견했습니다.
환경변수를 이쪽 패스로 잡아 주었더니 첫 단계에서 TRUE로 연결이 됩니다.
그러나 런 버튼 누르면 여전히 다음과 같은 메세지가 나오고 안 됩니다.
댓글 5
-
c2design
2019.02.14 18:09
-
정한결
2019.02.15 12:03
답변 감사합니다. 처음 시도할 때에 PG를 64bit로 깔았고, 그 PG 폴더의 bin에다가 환경변수를 설정해 주었습니다. c2님의 말대로라면 64bit PG에 32bit dll이 있다는게 되는데.. 아마 그건 아닌 것 같습니다.
-
happy
2019.02.15 16:07
-
정한결
2019.02.21 13:29
답변 감사합니다! 잘 읽어봤습니다. 저는 64비트를 설정하고 깔면 IDE도 64비트가 되는 줄 알았습니다...
답해주신분이 "64비트 OLE DB 프로바이더 액세스는 구조적으로 안되죠".. 라고 하셨는데, 그러면 64비트 프로그램은 PG를 이용해서 만들 수가 없는 거겠네요. 저 스크린샷에 나온 런타임 에러를 해결을 할 수가 없는거구요. 의문 해결 감사합니다.
-
험프리
2019.02.22 09:17
32비트, 64비트 2가지 라이브러리(dll)를 모두 사용해야 합니다.
RAD 스튜디오 IDE는 32비트입니다. IDE에서 32비트 라이브러리를 참고하고, 64비트 프로젝트의 실행파일은 64비트 라이브러리를 참조해야 합니다.
[라이브러리 설치 방법은]
32비트 라이브러리는 RAD 스튜디오 IDE 실행파일(bds.exe)과 같은 디렉토리에 설치하시고,
64비트 라이브러리는 64비트 프로젝트 실행파일과 같은 디렉토리에 설치하시기 바랍니다.
배포시에는 64비트 라이브러리를 실행파일과 같은 경로 또는 시스템 패스에 등록된 경로에 배포하시기 바랍니다.
——————
답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.
(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
LIBPQ.DLL 파일이 64bit가 아닌 32bit 용으로 의심이 됩니다.
LIBPQ.DLL 파일을 64bit용이 맞는지 확인해보시고 64bit용으로 테스트 해보시길 바랍니다.
dll 파일 같은경우는 32bit와 64bit가 파일명으로 구분이 되지 않는 경우가 종종 있습니다.
즉, 같은 파일명이라도 32bit 와 64bit 파일이 다른경우가 있습니다.