자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 데이터스냅(datasnap) 관련하여 질문드립니다.
2019.12.10 17:18
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요.
데이터스냅 관련하여 오류가 있어 문의드립니다.
원격서버에 미들웨어서버를 배포하고 개발pc에서 데이터스냅 클라이언트를 실행하는 테스트를 하고 있습니다.
개발 및 테스트 환경은 아래와 같습니다.
개발pc : 윈도우 10(64bit)
개발 델파이버전 : 10.3.1
외부 원격서버 : centos 7(64bit)
외부 원격서버에 설치된 DB : MariaDB 5.5.56(64bit)
개발 pc에서 원격서버에 설치된 MariaDB에 연결하여 작업을 했습니다.
개발 pc에서 데이터 스냅 서버와 클라이언트를 작업하여 서버를 실행하고 또한 클라이언트를 실행하면 원격서버의 DB 값을 문제 없이 읽어 옵니다.
잘 돌아가는 것을 확인하고 이번에는 원격서버에 미들웨어로 데이터 스냅 서버를 배포하기 위해 paserver를 설치하고 배포하니 데이터 스냅 서버가 원격 서버에서 돌아가는 것을 확인하였습니다.(아래그림 참고)
미들웨어 서버 배포시 FDCONNECTION의 Connected : TRUE, FDQUERY의 Active : TRUE로 한후 배포하였습니다.
그 다음 데이터스냅 클라이언트의 SQLConnection Params에서 HostName을 원격서버 ip로 바꾼 후 개발pc의 데이터 스냅 클라이언트를 실행하여 DB를 연결하려고 하니 에러가 발생합니다. 데이터스냅 클라이언트의 SQLConnection은 connected는 true로 되는데 ClientDataSet에서 Active 하려니 에러가 납니다.
에러메세지는 아래와 같습니다.
Exception: EFDException
Message: [FireDAC][Phys][MySQL]-314. Cannot load vendor library [libmysqlclient.so or libmysqld.so]. Hint: check it is in the PATH or application EXE directories, and has x64 bitness.
개발자 Q&A의 비슷한 증상을 참고하여 /usr/lib64/mysql/libmysqlclient.so.18.0.0 화일을 확인하고 심볼링크 조치를 하였습니다.(아래그림 참고)
결론적으로 같은 에러메세지가 계속 발생하며 해결이 안되네요.
해결방법을 알고 싶습니다. 부탁드립니다.
Delphi 데이터스냅(datasnap) 관련하여 질문드립니다.
2019.12.10 17:18
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요.
데이터스냅 관련하여 오류가 있어 문의드립니다.
원격서버에 미들웨어서버를 배포하고 개발pc에서 데이터스냅 클라이언트를 실행하는 테스트를 하고 있습니다.
개발 및 테스트 환경은 아래와 같습니다.
개발pc : 윈도우 10(64bit)
개발 델파이버전 : 10.3.1
외부 원격서버 : centos 7(64bit)
외부 원격서버에 설치된 DB : MariaDB 5.5.56(64bit)
개발 pc에서 원격서버에 설치된 MariaDB에 연결하여 작업을 했습니다.
개발 pc에서 데이터 스냅 서버와 클라이언트를 작업하여 서버를 실행하고 또한 클라이언트를 실행하면 원격서버의 DB 값을 문제 없이 읽어 옵니다.
잘 돌아가는 것을 확인하고 이번에는 원격서버에 미들웨어로 데이터 스냅 서버를 배포하기 위해 paserver를 설치하고 배포하니 데이터 스냅 서버가 원격 서버에서 돌아가는 것을 확인하였습니다.(아래그림 참고)
미들웨어 서버 배포시 FDCONNECTION의 Connected : TRUE, FDQUERY의 Active : TRUE로 한후 배포하였습니다.
그 다음 데이터스냅 클라이언트의 SQLConnection Params에서 HostName을 원격서버 ip로 바꾼 후 개발pc의 데이터 스냅 클라이언트를 실행하여 DB를 연결하려고 하니 에러가 발생합니다. 데이터스냅 클라이언트의 SQLConnection은 connected는 true로 되는데 ClientDataSet에서 Active 하려니 에러가 납니다.
에러메세지는 아래와 같습니다.
Exception: EFDException
Message: [FireDAC][Phys][MySQL]-314. Cannot load vendor library [libmysqlclient.so or libmysqld.so]. Hint: check it is in the PATH or application EXE directories, and has x64 bitness.
개발자 Q&A의 비슷한 증상을 참고하여 /usr/lib64/mysql/libmysqlclient.so.18.0.0 화일을 확인하고 심볼링크 조치를 하였습니다.(아래그림 참고)
결론적으로 같은 에러메세지가 계속 발생하며 해결이 안되네요.
해결방법을 알고 싶습니다. 부탁드립니다.
오류 내용으로 봐서는
CentOS 환경의 데이터스냅 서버에서 클라이언트 연결 시, FireDAC에서 libmysqlclient.so 파일을 찾지 못하는 것으로 보입니다.
(아시는 내용이겠지만 다른 분들 참고를 위해)
리눅스 환경에서 FireDAC으로 mysql 연결은 다음 문서를 참고하셔야 합니다.
http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_MySQL_Server_(FireDAC)#Linux_Client_Software
그리고 CentOS 환경은 Red Hat 환경을 참고해야 합니다. 다음과 같이 설치 후 심볼릭 링크를 생성해야 합니다.
-----
올리신 마지막 이미지의 경우 /usr/lib64/mysql 경로에서 목록을 출력한것 같습니다. 맞나요?
그렇다면, 잘못 설정된 내용은 없어 보입니다.(제가 ubuntu 환경만 있어 동일한 설정 확인 및 테스트가 어려워 내용만 보고 안내드립니다.)
그렇다면, 문제를 나누어 테스트를 진행해보시길 권장드립니다.
현재 "데이터스냅에서 FIreDAC으로 mariadb에 연결 시 오류가 발생"을
1) mariadb에 연결과 2) 데이터스냅 실행으로 나눠서 확인해 보시기 바랍니다.
1) 마리아db 연결을 먼저 테스트 해보시기 바랍니다.
1, 콘솔 프로젝트를 만들고, 리눅스에 배포하도록 설정합니다.
2, 콘솔 프로젝트에서 마리아DB 연결하도록 설정합니다.(데이터 모듈 등 이용)
3, 실행 시 특정 데이터를 조회 하도록 구현합니다.
위 내용을 참고하셔서 테스트 해봐주시고, 잘모르는 내용은 질문주시기 바랍니다.
잘진행되지 않는다면 소스파일 등을 포함해 질문해 주시기 바랍니다.
만약, 위의 과정에서 문제가 없다면 데이터 스냅 실행 부분을 살펴봐야 합니다.