기고글 토론 "MQL5(MQL4)에서 MySQL 데이터베이스에 액세스하는 방법" - 페이지 9 12345678910111213141516...30 새 코멘트 Sergey Deynego 2016.01.16 12:31 #81 Eugeniy Lugovoy: MT4 빌드 890 x32 방금 확인했습니다. 모든 것이 작동합니다.테스트 스크립트 실행 로그입니다:여러분, 설명해 주세요:1. 어떤 작업에서"액세스 위반 읽기" 가 발생합니까??2. MySQL-001 스크립트를 실행할 때 전문가 탭에 표시되는 MQLMySQL 버전은 다음과 같아야 합니다: MQLMySQL v2.2 x32 저작권 © 2014, FxCodex Laboratory3. MySQL 데이터베이스의 버전은 무엇입니까? 4. MySQL을 로컬에서 사용합니까, 아니면 원격 호스트에서 사용합니까?5. 어떤 운영 체제에서 터미널을 실행합니까?오류를 재현할 수 없으니 확인 후 다시 알려주세요.비슷한 환경을 만들어서 테스트해 보겠습니다.MT4(950)를 사용하고 있습니다. 문서에 첨부된 아카이브에서 파일을 가져왔습니다. 최신 버전이 아니라는 것을 올바르게 이해했나요? MySQL-001 EURUSD,M1: MQLMySQL v2.0 데모 저작권 © 2014, FxCodex Laboratory.구성 파일에서 데이터를 읽지 않습니다. Eugeniy Lugovoy 2016.01.16 17:16 #82 Sergey Deynego:저는 MT4(950)를 사용합니다. 기사에 첨부된 아카이브에서 파일을 가져왔습니다. 최신 버전이 아니라는 것을 올바르게 이해했습니까? MySQL-001 EURUSD,M1: MQLMySQL v2.0 데모 저작권 © 2014, FxCodex Laboratory구성 파일에서 데이터를 읽지 못합니다.예, v2.0은 이전 버전입니다. 이 글의 토론에 이미 최신 버전을 게시했습니다.지금 첨부하겠습니다.MQLMySQL v2.2 - x64 및 x86용 DLL 프로젝트 소스이것에서 뭔가를 시도해보십시오. 최신 버전인 것 같습니다. 파일: MQLMySQL_v2.2.zip 4801 kb MQL4_x32.zip 1073 kb MQL5_x32.zip 1073 kb MQL5_x64.zip 1076 kb peg 2016.01.18 11:56 #83 Eugeniy Lugovoy:로그에 표시된 오류에 따르면: 0 11:09:37.742 MySQL-002 EURUSD,H1: `table` 테이블을 만들 수 없습니다.MySQL 데이터베이스의 키워드 인 "table"이라는 이름을 사용하고 있으며 테이블 이름으로 사용할 수 없으므로 예를 들어 "table1"로 변경하여 작동하는지 확인하십시오.또는 데이터베이스가 선택되지 않았거나 설정되지 않았을 수 있습니다. 연결 직후 "USE database_name" 명령을 실행할 수 있으며, 여기서 database_name은 데이터베이스의 이름입니다.예를 들어 내 데이터베이스가 "mysql"인 경우: DB = MySqlConnect(호스트, 사용자, 비밀번호, 데이터베이스, 포트, 소켓, 클라이언트플래그); if (DB ==-1) { Print ("연결 실패! 오류:"+MySqlErrorDescription); } else { Print ("연결됨! DBID#",DB);} MySqlExecute(DB, "USE mysql");테이블 이름과 MySqlExecute(DB, "USE mt4") 명령에 대한 제안을 따랐지만 여전히 오류 메시지가 표시됩니다:0 12:51:40.534 스크립트 MySQL-002new EURUSD,M1: 로드에 성공했습니다.0 12:51:40.549 MySQL-002new EURUSD,M1: 초기화됨0 12:51:40.549 MySQL-002new EURUSD,M1: MQLMySQL v2.0 데모 저작권 © 2014, 에프엑스코덱스 연구소0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , 사용자: , 데이터베이스:0 12:51:40.549 MySQL-002new EURUSD,M1: Connecting...0 12:51:40.565 MySQL-002new EURUSD,M1: Connected! DBID#00 12:51:40.565 MySQL-002new EURUSD,M1: `test_table` 테이블을 만들 수 없습니다. 오류입니다: 기본 데이터베이스가 없습니다.0 12:51:40.565 MySQL-002new EURUSD,M1: 연결이 끊어졌습니다. 스크립트 완료!0 12:51:40.565 MySQL-002new EURUSD,M1: uninit reason 00 12:51:40.565 스크립트 MySQL-002new EURUSD,M1: removed Discussion of article "How IndicatorCounted() Twice all Bars? New metatrader 4 related Mehdi Donyadideh Ahrab 2016.02.19 22:25 #84 안녕하세요 유지니 루고보이입니다,유용한 프로젝트에 감사드립니다.테이블에서 약 3,000자의 문자열 필드를 읽으려고 하는데, 다음과 같이 "MySqlGetFieldAsString"을 사용했습니다:if (커서 >= 0){Rows = MySqlCursorRows(Cursor);for (int i=0; i<Rows; i++)if (MySqlCursorFetchRow(Cursor)){Get_Setting = MySqlGetFieldAsString(Cursor, 4);} .....하지만 문제는 Get_String이 1025자만 반환한다는 것입니다,그 필드를 완전히 읽어야합니다.이 문제를 해결하도록 도와주실 수 있나요?안부 Eugeniy Lugovoy 2016.02.24 12:30 #85 FX. MDA7:안녕하세요 유지니 루고보이입니다,유용한 프로젝트에 감사드립니다.테이블에서 약 3,000자의 문자열 필드를 읽으려고 하는데, 다음과 같이 "MySqlGetFieldAsString"을 사용했습니다:if (커서 >= 0){Rows = MySqlCursorRows(Cursor);for (int i=0; i<Rows; i++)if (MySqlCursorFetchRow(Cursor)){Get_Setting = MySqlGetFieldAsString(Cursor, 4);} .....하지만 문제는 Get_String이 1025자만 반환한다는 것입니다,그 필드를 완전히 읽어야합니다.이 문제를 해결하도록 도와주실 수 있나요?안녕하세요 예, 문자 데이터의 최대 길이를 1024자로 설정했습니다. 이 제한을 변경하고 DLL을 다시 빌드 할 수 있습니다. 그런데 DB 측에서 해당 열에 어떤 데이터 유형을 사용하고 있습니까? Eugeniy Lugovoy 2016.02.24 12:32 #86 peg:테이블 이름과 MySqlExecute(DB, "USE mt4") 명령에 대한 제안을 따랐지만 여전히 오류 메시지가 표시됩니다:0 12:51:40.534 스크립트 MySQL-002new EURUSD,M1: 로드에 성공했습니다.0 12:51:40.549 MySQL-002new EURUSD,M1: 초기화됨0 12:51:40.549 MySQL-002new EURUSD,M1: MQLMySQL v2.0 데모 저작권 © 2014, 에프엑스코덱스 연구소0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , 사용자: , 데이터베이스:0 12:51:40.549 MySQL-002new EURUSD,M1: Connecting...0 12:51:40.565 MySQL-002new EURUSD,M1: Connected! DBID#00 12:51:40.565 MySQL-002new EURUSD,M1: `test_table` 테이블을 만들 수 없습니다. 오류입니다: 기본 데이터베이스가 없습니다.0 12:51:40.565 MySQL-002new EURUSD,M1: 연결이 끊어졌습니다. 스크립트 완료!0 12:51:40.565 MySQL-002new EURUSD,M1: uninit reason 00 12:51:40.565 스크립트 MySQL-002new EURUSD,M1: removed 왜 버전이"MQLMySQL v2.0" 인가요? 2.2여야 합니다. Ingvar Engelbrecht 2016.02.29 00:09 #87 훌륭합니다!MQL5를 사용하여 MQL4용 데이터를 생성했습니다.쿼리 명령에서 테이블 이름 주위의 작은따옴표를 제거해야 한다는 점을 제외하면 모든 것이 훌륭하게 작동했습니다. 쿼리 ="SELECT Symbol,Composite,Pattern FROM summarytable";정상 작동 Eugeniy Lugovoy 2016.02.29 09:56 #88 Ingvar Engelbrecht:훌륭합니다!MQL5를 사용하여 MQL4용 데이터를 생성했습니다.쿼리 명령에서 테이블 이름 주위의 작은따옴표를 제거해야 한다는 점을 제외하면 모든 것이 훌륭하게 작동했습니다. 쿼리 ="SELECT Symbol,Composite,Pattern FROM summarytable";정상 작동예, 대/소문자(mysql은 대소문자를 구분함) 및 특수 기호를 사용하여 테이블 이름을 지정하지 않으려는 경우 따옴표 없이 사용할 수 있습니다. 참고로, 작은따옴표 기호 "'"가 아니라 "`"입니다.따라서 다음과 같이 쿼리할 수도 있습니다: Query ="SELECT `Symbol`,`Composite`,`Pattern` FROM `summarytable`";열의 이름을 Symbol로 지정하고 기호 또는 SYMBOL이 아닌 경우 danny_adil 2016.03.08 14:00 #89 안녕하세요 유지니,모듈을 보내주셔서 감사합니다. 필드 이름을 가져오는 함수를 추가하는 데 도움을 주시겠습니까? 아니면 VC++에서 어떻게 추가할 수 있을까요? 1982EAcsc 2016.04.23 17:36 #90 안녕하세요! 시스템 win10 64x, 데이터베이스에 연결할 수 없습니다, 도와 주시겠습니까? 12345678910111213141516...30 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
MT4 빌드 890 x32 방금 확인했습니다. 모든 것이 작동합니다.
테스트 스크립트 실행 로그입니다:
여러분, 설명해 주세요:
1. 어떤 작업에서"액세스 위반 읽기" 가 발생합니까??
2. MySQL-001 스크립트를 실행할 때 전문가 탭에 표시되는 MQLMySQL 버전은 다음과 같아야 합니다: MQLMySQL v2.2 x32 저작권 © 2014, FxCodex Laboratory
3. MySQL 데이터베이스의 버전은 무엇입니까?
4. MySQL을 로컬에서 사용합니까, 아니면 원격 호스트에서 사용합니까?
5. 어떤 운영 체제에서 터미널을 실행합니까?
오류를 재현할 수 없으니 확인 후 다시 알려주세요.
비슷한 환경을 만들어서 테스트해 보겠습니다.
MT4(950)를 사용하고 있습니다. 문서에 첨부된 아카이브에서 파일을 가져왔습니다. 최신 버전이 아니라는 것을 올바르게 이해했나요? MySQL-001 EURUSD,M1: MQLMySQL v2.0 데모 저작권 © 2014, FxCodex Laboratory.
구성 파일에서 데이터를 읽지 않습니다.
저는 MT4(950)를 사용합니다. 기사에 첨부된 아카이브에서 파일을 가져왔습니다. 최신 버전이 아니라는 것을 올바르게 이해했습니까? MySQL-001 EURUSD,M1: MQLMySQL v2.0 데모 저작권 © 2014, FxCodex Laboratory
구성 파일에서 데이터를 읽지 못합니다.
예, v2.0은 이전 버전입니다. 이 글의 토론에 이미 최신 버전을 게시했습니다.
지금 첨부하겠습니다.
MQLMySQL v2.2 - x64 및 x86용 DLL 프로젝트 소스
이것에서 뭔가를 시도해보십시오. 최신 버전인 것 같습니다.
로그에 표시된 오류에 따르면: 0 11:09:37.742 MySQL-002 EURUSD,H1: `table` 테이블을 만들 수 없습니다.
MySQL 데이터베이스의 키워드 인 "table"이라는 이름을 사용하고 있으며 테이블 이름으로 사용할 수 없으므로 예를 들어 "table1"로 변경하여 작동하는지 확인하십시오.
또는 데이터베이스가 선택되지 않았거나 설정되지 않았을 수 있습니다. 연결 직후 "USE database_name" 명령을 실행할 수 있으며, 여기서 database_name은 데이터베이스의 이름입니다.
예를 들어 내 데이터베이스가 "mysql"인 경우:
DB = MySqlConnect(호스트, 사용자, 비밀번호, 데이터베이스, 포트, 소켓, 클라이언트플래그);
if (DB ==-1) { Print ("연결 실패! 오류:"+MySqlErrorDescription); } else { Print ("연결됨! DBID#",DB);}
MySqlExecute(DB, "USE mysql");
테이블 이름과 MySqlExecute(DB, "USE mt4") 명령에 대한 제안을 따랐지만 여전히 오류 메시지가 표시됩니다:
0 12:51:40.534 스크립트 MySQL-002new EURUSD,M1: 로드에 성공했습니다.
0 12:51:40.549 MySQL-002new EURUSD,M1: 초기화됨
0 12:51:40.549 MySQL-002new EURUSD,M1: MQLMySQL v2.0 데모 저작권 © 2014, 에프엑스코덱스 연구소
0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , 사용자: , 데이터베이스:
0 12:51:40.549 MySQL-002new EURUSD,M1: Connecting...
0 12:51:40.565 MySQL-002new EURUSD,M1: Connected! DBID#0
0 12:51:40.565 MySQL-002new EURUSD,M1: `test_table` 테이블을 만들 수 없습니다. 오류입니다: 기본 데이터베이스가 없습니다.
0 12:51:40.565 MySQL-002new EURUSD,M1: 연결이 끊어졌습니다. 스크립트 완료!
0 12:51:40.565 MySQL-002new EURUSD,M1: uninit reason 0
0 12:51:40.565 스크립트 MySQL-002new EURUSD,M1: removed
안녕하세요 유지니 루고보이입니다,
유용한 프로젝트에 감사드립니다.
테이블에서 약 3,000자의 문자열 필드를 읽으려고 하는데, 다음과 같이 "MySqlGetFieldAsString"을 사용했습니다:
if (커서 >= 0)
{
Rows = MySqlCursorRows(Cursor);
for (int i=0; i<Rows; i++)
if (MySqlCursorFetchRow(Cursor))
{
Get_Setting = MySqlGetFieldAsString(Cursor, 4);
}
.....
하지만 문제는 Get_String이 1025자만 반환한다는 것입니다,
그 필드를 완전히 읽어야합니다.
이 문제를 해결하도록 도와주실 수 있나요?
안부
안녕하세요 유지니 루고보이입니다,
유용한 프로젝트에 감사드립니다.
테이블에서 약 3,000자의 문자열 필드를 읽으려고 하는데, 다음과 같이 "MySqlGetFieldAsString"을 사용했습니다:
if (커서 >= 0)
{
Rows = MySqlCursorRows(Cursor);
for (int i=0; i<Rows; i++)
if (MySqlCursorFetchRow(Cursor))
{
Get_Setting = MySqlGetFieldAsString(Cursor, 4);
}
.....
하지만 문제는 Get_String이 1025자만 반환한다는 것입니다,
그 필드를 완전히 읽어야합니다.
이 문제를 해결하도록 도와주실 수 있나요?
안녕하세요
테이블 이름과 MySqlExecute(DB, "USE mt4") 명령에 대한 제안을 따랐지만 여전히 오류 메시지가 표시됩니다:
0 12:51:40.534 스크립트 MySQL-002new EURUSD,M1: 로드에 성공했습니다.
0 12:51:40.549 MySQL-002new EURUSD,M1: 초기화됨
0 12:51:40.549 MySQL-002new EURUSD,M1: MQLMySQL v2.0 데모 저작권 © 2014, 에프엑스코덱스 연구소
0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , 사용자: , 데이터베이스:
0 12:51:40.549 MySQL-002new EURUSD,M1: Connecting...
0 12:51:40.565 MySQL-002new EURUSD,M1: Connected! DBID#0
0 12:51:40.565 MySQL-002new EURUSD,M1: `test_table` 테이블을 만들 수 없습니다. 오류입니다: 기본 데이터베이스가 없습니다.
0 12:51:40.565 MySQL-002new EURUSD,M1: 연결이 끊어졌습니다. 스크립트 완료!
0 12:51:40.565 MySQL-002new EURUSD,M1: uninit reason 0
0 12:51:40.565 스크립트 MySQL-002new EURUSD,M1: removed
훌륭합니다!
MQL5를 사용하여 MQL4용 데이터를 생성했습니다.
쿼리 명령에서 테이블 이름 주위의 작은따옴표를 제거해야 한다는 점을 제외하면 모든 것이 훌륭하게 작동했습니다.
쿼리 ="SELECT Symbol,Composite,Pattern FROM summarytable";
정상 작동
훌륭합니다!
MQL5를 사용하여 MQL4용 데이터를 생성했습니다.
쿼리 명령에서 테이블 이름 주위의 작은따옴표를 제거해야 한다는 점을 제외하면 모든 것이 훌륭하게 작동했습니다.
쿼리 ="SELECT Symbol,Composite,Pattern FROM summarytable";
정상 작동
예, 대/소문자(mysql은 대소문자를 구분함) 및 특수 기호를 사용하여 테이블 이름을 지정하지 않으려는 경우 따옴표 없이 사용할 수 있습니다. 참고로, 작은따옴표 기호 "'"가 아니라 "`"입니다.
따라서 다음과 같이 쿼리할 수도 있습니다: Query ="SELECT `Symbol`,`Composite`,`Pattern` FROM `summarytable`";
열의 이름을 Symbol로 지정하고 기호 또는 SYMBOL이 아닌 경우
안녕하세요 유지니,
모듈을 보내주셔서 감사합니다. 필드 이름을 가져오는 함수를 추가하는 데 도움을 주시겠습니까? 아니면 VC++에서 어떻게 추가할 수 있을까요?
안녕하세요!
시스템 win10 64x, 데이터베이스에 연결할 수 없습니다, 도와 주시겠습니까?