기고글 토론 "MQL5(MQL4)에서 MySQL 데이터베이스에 액세스하는 방법" - 페이지 13

 
Pavel Kolchin:

WIN 7 X64 - MT5 X64 최신 버전(V5 B1455)

MySQL에 접속할 수 없지만 아쉽지는 않습니다.

서버: UNIX 소켓을 통한 로컬 호스트

서버 유형: 퍼코나 서버

서버 버전: 5.5.35-33.0-log - Percona Server(GPL), 릴리스 rel33.0, 리비전 611

프로토콜 버전: 10

사용자: ***

서버 인코딩: UTF-8 유니코드(utf8)

mql4에서 작동
오류가 재현되었습니다. 해결하겠습니다...
 

다음은 MQL5용으로 다시 컴파일된 x64입니다.

파벨이 사용해 보세요.

파일:
MQL5_x64.zip  1412 kb
 
Eugeniy Lugovoy:


dll 연결에 더 이상 문제가 없습니다.

모든 것이 작동합니다, 감사합니다

 
Pavel Kolchin:

dll 연결에 더 이상 문제가 없습니다.

모든 것이 작동합니다, 감사합니다

언제나 기꺼이 도와드리겠습니다.

프로젝트에 행운을 빕니다.

 
Yuriy Asaulenko:

고마워요, 잘 읽었습니다. 현재 글의 작성자가 아주 좋은 지적을 해주셨어요. ..... 그리고 모든 것을 망쳤습니다.)


나 자신도 충돌 문제를 한 번 이상 겪었습니다. 예를 들어, 거래 로봇이 다른 차트에 연결되어 있지만 하나의베이스를 사용하고 액세스가 하나의 범용 테이블 (예 : 세션, 계정 등록 / 변경)에 액세스하는 경우 어떤 경우에도 "테이블 잠김"과 같은 오류가 발생합니다. 그리고 모든 트랜잭션이 완료되고 커서가 닫히고 데이터베이스가 공유 모드에서 열린 것은 중요하지 않습니다.


해설자는 아마도 잠금이있는 모드에 대한 컴파일을 통해 또는 프래그마를 통해 모든 충돌을 해결하는 sqlite 설정을 이해하지 못했을 것입니다.

나는 동시 읽기 / 쓰기 멀티 스레딩으로 무거운 프로젝트에서 몇 년 동안 일해 왔으며 문제가 없으며 가장 중요한 것은 똑바로 손을 갖는 것이라고 말할 수 있습니다.

 
o_O:

주석 작성자는 아마도 잠금이있는 모드에 대한 컴파일 또는 프래그마를 통해 모든 충돌을 해결하는 sqlite 설정을 이해하지 못했을 것입니다.

나는 동시 읽기 / 쓰기 멀티 스레딩으로 무거운 프로젝트에서 몇 년 동안 일해 왔으며 문제가 없다고 말할 수 있으며, 가장 중요한 것은 똑바로 손을 갖는 것입니다.

o_O

SQLite에 대해 해당 프로젝트를 선택하고 테스트 스크립트 / EA를 작성하고 잠금이 다시 발생하면 (괜찮다면) 함께 알아 내고 커뮤니티에 소프트웨어 솔루션을 제공 할 수 있습니다.

DB의 장점(자율성, SQL, 이동성, 임베디드 가능성 등)이 있기 때문에 이 점에 주목할 가치가 있습니다.

실제로 저는 소스 코드가 아닌 SQLite에서 준비된 DLL을 가져와서 다시 컴파일하지 않고 C++ API로 작업했습니다.

 
Eugeniy Lugovoy:

o_O

제가 해당 프로젝트를 가져와서 테스트 스크립트/EA를 작성하고 다시 잠긴 부분이 있다면 (괜찮다면) 함께 해결하고 커뮤니티에 소프트웨어 솔루션을 제공할 수 있을 것 같습니다.

DB의 장점(자율성, SQL, 이동성, 임베디드 가능성 등)이 있기 때문에 이 점에 주목할 가치가 있습니다.

실제로 저는 소스 코드가 아닌 SQLite에서 기성 DLL을 가져와서 다시 컴파일하지 않고 C++ API로 작업했습니다.

SQLite 잠금에 대한 '신화'가 확인되거나 불식된다면 정말 흥미로울 것 같습니다. 이러한 불확실성이나 이를 해결하기 위한 솔루션이 없었다면 상호 운용성을 위한 매우 매력적인 옵션입니다. 예를 들어 동일한 데이터베이스를 Access와 비교하여 성능에 대해 알아보는 것도 흥미로울 것입니다. 물론 누군가가 실제 시간과 그러한 작업을 수행하려는 욕구가있는 경우.

Access, SQL Server, Oracle 등 모든 데이터베이스에 연결할 수있는 타사 소프트웨어에 기본을 연결하는 것에 대한 질문이 여전히 있습니다. SQLite에 OLEDB 또는 적어도 ODBC와 같은 드라이버가 컴퓨터에 설치되어 있습니까? 그리고 동일한 Access에서 여러 애플리케이션이 문제 없이 서로 다른 인터페이스를 통해 동일한 데이터베이스에 비동기적으로 쓰기-읽기를 할 수 있습니다. SQLite에서는 이것이 작동하지 않을 수 있다고 생각합니다.

 
Yuriy Asaulenko:

SQLite 잠금에 대한 '신화'가 확인되거나 해소된다면 정말 흥미로울 것입니다. 이러한 불확실성이나 이를 제거할 수 있는 솔루션이 없었다면 SQlite는 상호 운용성을 위한 매우 매력적인 옵션입니다. 예를 들어, 동일한 데이터베이스를 Access와 비교하여 성능에 대해 아는 것도 흥미로울 것입니다. 물론 누군가가 실제 시간과 그러한 작업을 수행하려는 욕구가있는 경우.

Access, SQL Server, Oracle 등 모든 데이터베이스에 연결할 수있는 타사 소프트웨어에 기본을 연결하는 것에 대한 질문이 여전히 있습니다. SQLite에 OLEDB 또는 적어도 ODBC와 같은 드라이버가 컴퓨터에 설치되어 있습니까? 그리고 동일한 Access에서 여러 애플리케이션이 문제 없이 서로 다른 인터페이스를 통해 동일한 데이터베이스에 비동기적으로 쓰기-읽기를 할 수 있습니다. SQLite에서는 이것이 작동하지 않을 수 있다고 생각합니다.

SQLite 용 OLEDB를 사용할 수 있습니다. 그건 그렇고, OLEDB를 통해 SQLite로 찾는 것에 대한 테스트 스크립트를 실행하는 흥미로운 아이디어.... 물론 변태적이지만 우리는 모두 변태입니다....

그리고 기본 액세스에 대해서는 공동 노력을 통해 긍정적 인 결과를 얻을 수 있다고 생각합니다. 시간 문제입니다. 이번 주에는 할 수 없을 것입니다... 주말에 시간을 낼 수 있을지도 모르죠...

 
Eugeniy Lugovoy:

SQLite용 OLEDB를 사용할 수 있습니다. 그건 그렇고, OLEDB를 통해 SQLite로 loc에 대한 테스트 스크립트를 실행하는 흥미로운 아이디어.... 물론 변태적이지만 우리는 모두 변태입니다....

그리고 네이티브 액세스에서는 공동 노력을 통해 긍정적 인 결과를 얻을 수 있다고 믿습니다. 시간 문제 일뿐 이번 주에는 할 수 없을 것입니다... 주말에 시간을 할애할 수도 있겠죠...

데이터베이스를 만들고 많은 테이블에 많은 양의 정보를 쓰는(읽지 않고) 애플리케이션이 있습니다. 컴퓨터에 설치되어 있고 애플리케이션 설정을 통해 볼 수 있는 OLEDB 드라이버를 찾을 수 있다면 SQLite가 중단되지 않는지 쉽게 테스트할 수 있습니다. 마찬가지로 동일한 Access에서 SQLite에 연결하여 테이블을 병렬로 읽고 수정해 볼 수 있습니다. 물론 측정할 수 있는 것은 없습니다.

인터넷을 통해 살펴봤습니다. 한 번에 그러한 OLEDB 제공 업체를 찾을 수 없었습니다. 내가 이해하는 한 프로그래밍 언어에서만 사용할 수있는 더 많은 OLEDB DLL이 있습니다.

 

가 계속 나타나기 시작했는데, 무슨 뜻일까요?

이 줄에서 코드를 실행하면

if(DB==-1){DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);}

res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);