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

 
caching_sha2_password 지원은 어떻게 하나요? 이 문제를 해결할 수 있는 방법이 있나요 아니면 그냥 mysql_native_password를 설치해야 하나요?
 
Dmitri Custurov:
caching_sha2_password 지원은 어떻게 하나요? 이를 처리 할 수있는 방법이 있습니까 아니면 그냥 mysql_native_password를 설치합니까?

지금까지 네이티브 만 지원됩니다. 이 솔루션에서 sha2 지원이 정말 필요한 사람이 있습니까?

그래서 데이터베이스 서버가 로컬에 있지 않거나 심지어 VPN 아래에 있지 않습니까?

 

안녕하세요 @EugeniyLugovoy, 수고해주셔서감사합니다!

현재 구현 버전에서 INSERT 작업 후 (AUTO_INCREMENT 열이 있는 테이블에서) "LAST_INSERT_ID"를 검색할 수 있는 방법이 있나요?

미리 감사드리며 좋은 하루 되세요 :)
 
arsenico42:

안녕하세요 @EugeniyLugovoy, 수고해주셔서감사합니다!

현재 구현 버전에서 INSERT 작업 후 (AUTO_INCREMENT 열이 있는 테이블에서) "LAST_INSERT_ID"를 검색할 수 있는 방법이 있나요?

미리 감사 드리며 좋은 하루 되세요 :)


안녕하세요 arsenico42 님, 한 쿼리에서 삽입을 한 다음 다른 쿼리에서 LAST_INSERT_ID를 선택하는 방법을 시도 할 수 있지만 LAST_INSERT_ID는 전역 데이터베이스 변수를 반환하는 함수이며 원래 삽입과 LAST_INSERT_ID 선택 사이에 다른 삽입 (다른 사용자로부터 동시에 실행되는)이 LAST_INSERT_ID 값에 영향을 줄 수 있으므로이 방법을 권장 할 수는 없습니다.

이것은 라이브러리에 의존하는 것이 아니라 mysql/mariadb의 작동 방식입니다.

하지만 데이터베이스 측에서 필요한 값을 삽입하는 함수를 생성하고 LAST_INSERT_ID를 선택한 후 이 ID를 함수 값으로 반환하는 것이 좋을 것 같습니다:

CREATE FUNCTION `import_funds_add`(
        `p_file_name` varchar(64),
        `p_full_path` varchar(2000),
        `p_status` VARCHAR(10),
        `p_error` VARCHAR(2000)
)
RETURNS bigint(20)
LANGUAGE SQL
NOT DETERMINISTIC
MODIFIES SQL DATA
BEGIN
     declare id bigint;
     INSERT INTO import_funds(`file_name`, `full_path`, `status`, `error`, `creation_date`) 
     VALUES (p_file_name, p_full_path, p_status, p_error, now());
     SELECT LAST_INSERT_ID() INTO id;
     RETURN(id);
END;;

그리고 MQL에서는 쿼리를 위해 커서를 열어야 합니다:

qry="SELECT import_funds_add('bonuses.csv','c:\\broker imports\\XXX-FX','NEW','No errors') as last_id";

를 입력한 다음 일반 커서에서 값을 가져오고 커서를 닫아야 합니다.

따라서 MQL에서는 이러한 명령을 별도로 사용하는 대신 DB 쪽에서 함수로 결합하면 됩니다.

라이브 시스템의 예시일 뿐입니다.

 
Carmine Marrone:

안녕하세요 엘루고보이

멋진 기사와 훌륭한 라이브러리입니다.

MT5에서 예제를 사용하려고 하는데 이 오류가 발생하고 있습니다:

2014.12.15 15:44:16.387 MySQL-001 'C:\사용자\....\앱데이터\로밍\MetaQuotes\터미널\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' 64비트 버전이 아닙니다.

32비트 환경에서 MT5를 실행하고 계신가요?

도와주실 수 있나요?

정말 감사합니다!

카민 마론.

안녕하세요 Carmine 님, github의 소스에서 x64 버전을 다운로드할 수 있습니다.

https://github.com/elugovoy/MQLMySQL-Project/tree/master/MQLMySQL/x64/Release

 

안녕하세요 , 먼저 커뮤니티에 기여해 주신@Eugeniy Lugovoy님께 감사드립니다.


문제가 생겼습니다:

"Cannot load 'C:\Users\Admin\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\MQL5\libraries\MQLMySQL.dll'" [126]

"'ReadIni'를 호출할 수 없습니다, '..\libraries\MQLMySQL.dll'이 로드되지 않았습니다."
 
MARCOS DALCIN ALVES DINIZ:

안녕하세요 , 먼저 커뮤니티에 기여해주신 모든 분들께 감사드립니다.


문제가 생겼습니다:

"Cannot load 'C:\Users\Admin\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\MQL5\libraries\MQLMySQL.dll'" [126]

"'ReadIni'를 호출할 수 없습니다, '..\libraries\MQLMySQL.dll'이 로드되지 않았습니다."

"C:\Users\Admin\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\MQL5\libraries\" 폴더에 MQLMySQL.dll 및 MQLMySQL.def 파일이 있는지 확인합니다.

보시다시피, 테스터 모드에서 MQL 프로그램을 실행하는 경우 UAC로 인해 라이브러리 경로가 달라집니다.

 

다중 삽입 가져오기 오류.

Query =         "INSERT INTO `test_table` (id, code, start_date) VALUES (1,\'EURUSD\',\'2014.01.01 00:00:01\');";
Query = Query + "INSERT INTO `test_table` (id, code, start_date) VALUES (2,\'EURJPY\',\'2014.01.02 00:02:00\');";
Query = Query + "INSERT INTO `test_table` (id, code, start_date) VALUES (3,\'USDJPY\',\'2014.01.03 03:00:00\');";
      

여러 문에 오류가 발생했습니다: SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 가까운 곳에 사용할 올바른 구문을 확인하세요.



 
수정 SQL 명령을 지원하나요?
 
Yu Zhang:

다중 삽입 가져오기 오류가 발생했습니다.

여러 문에 오류가 발생했습니다: SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 가까운 곳에 사용할 올바른 구문을 확인하세요.



데이터베이스 연결 열기 시 다중 문 클라이언트 플래그를 설정했는지 확인하세요.

int ClientFlag = CLIENT_MULTI_STATEMENTS; // 다중 문 플래그 설정하기
int DB; 

DB = MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag); // 데이터베이스에 연결