文章 "如何从 MQL5 (MQL4) 访问 MySQL 数据库" - 页 26

 
Ana Fonseca:
我应该将 DLL 保存在哪个文件夹中?
以下是完整的 DLL 更新包:https://github.com/elugovoy/MQLMySQL-Project
包括位于 metatrader 文件夹结构中的已编译 DLL
 

你好,尤金尼、

请提供 64 版本的 MQLMySQL.dll。加载时,mt 提示

'C:\Users\ddy\AppData\Roaming\MetaQuotes\Terminal\A82A50F46FD795A059C2382724C7195E\MQL5\libraries\MQLMySQL.dll' is not 64-bit version
Cannot load 'C:\Users\ddy\AppData\Roaming\MetaQuotes\Terminal\A82A50F46FD795A059C2382724C7195E\MQL5\libraries\MQLMySQL.dll' [193]
 
Xiaowei Yan:

你好,尤金尼、

请提供 64 版本的 MQLMySQL.dll。加载时,mt 提示

当然可以,您可以从 GitHub 下载编译后的 x64 DLL:https://github.com/elugovoy/MQLMySQL-Project/tree/master/MQLMySQL/x64/Release

项目的完整版本库:https://github.com/elugovoy/MQLMySQL-Project

致敬、

尤金

elugovoy/MQLMySQL-Project
elugovoy/MQLMySQL-Project
  • elugovoy
  • github.com
MQL & DLL libraries for working with MySQL database - elugovoy/MQLMySQL-Project
 

你好, 尤金尼、

我想知道是否有办法改变从文件中读取设置的代码

// 从 INI 文件读取数据库证书
 Host = ReadIni(INI, "MYSQL", "Host");
 User = ReadIni(INI, "MYSQL", "User");
 Password = ReadIni(INI, "MYSQL", "Password");
 Database = ReadIni(INI, "MYSQL", "Database");
 Port     = (int)StringToInteger(ReadIni(INI, "MYSQL", "Port"));
 Socket   = ReadIni(INI, "MYSQL", "Socket");
 ClientFlag = CLIENT_MULTI_STATEMENTS; 

并使用此赋值

Host = "127.0.0.1";
User = "mt4";
Password = "mt4";
Database ="mt4";
Port     = 3306
Socket   = 0
ClientFlag = CLIENT_MULTI_STATEMENTS; 

是否有可能,因为我得到的错误信息是 "读取 0x00000000 MQLMySQL.dll 时违反了访问权限"。

有没有可能的解决方案?

 
heere:

你好 ,尤金尼、

我想知道是否有办法修改从文件中读取设置的代码

的代码,改用以下赋值

是否有可能,因为我得到的错误信息是读取 0x00000000 MQLMySQL.dll 时违反了访问权限。

有没有可能的解决方案?

Host = "127.0.0.1";
User = "mt4";
Password = "mt4";
Database ="mt4";
Port     = 3306;
Socket   = "0"; // 该变量必须是字符串,而不是 int
ClientFlag = CLIENT_MULTI_STATEMENTS; 

也许这个能帮上忙

 
MARCOS DALCIN ALVES DINIZ:

更新 OpenSSL 版本后,它就能正常工作了。感谢您的聆听。

你好

我也遇到了 [126] 这个错误问题:


Cannot load'C:\Users\programer01\Desktop\MyMT5\MQL5\Libraries\MQLMySQL.dll' [126].

无法调用'cMySqlVersion','MQLMySQL.dll'未加载

未解决导入函数调用


MARCOS 提到,更新 OpenSSL 版本后出现这种情况是正常的。

如何更新 OpenSSL 版本?

谢谢!~



PS.

因为我不熟悉这个领域

我想再问一次

我看到您的库文件夹中有三个 dll 文件

1.libcrypto-1_1-x64.dll

2.libmysql.dll

3.libssl-1_1-x64.dll


我已安装 MySQL 软件

这些 dll 文件是从 .\Program Files\MySQL 下的路径复制的吗?

如果是,是从哪个文件夹复制的?


 
zboo:

嗨~

我也遇到了 [126] 的错误问题:


Cannot load'C:\Users\programer01\Desktop\MyMT5\MQL5\Libraries\MQLMySQL.dll' [126].

无法调用'cMySqlVersion','MQLMySQL.dll'未加载

未解决的导入函数调用


MARCOS 提到 更新 OpenSSL 版本后出现这种情况是正常的

如何更新 OpenSSL 版本?

谢谢!~



PS.

因为我不熟悉这个领域

我想再问一次

我看到您的库文件夹中有三个 dll 文件

1.libcrypto-1_1-x64.dll

2.libmysql.dll

3.libssl-1_1-x64.dll


我已安装 MySQL 软件

这些 dll 文件是从 .\Program Files\MySQL 下的路径复制的吗?

如果是,是从哪个文件夹复制的?


有人能帮我解决同样的问题吗?

谢谢~~~~

 
Eugeniy Lugovoy:

也许这能帮上忙

非常感谢。问题解决了。

 

@Eugeniy Lugovoy

下午好,尤金尼。非常感谢你的文章。能给我点建议吗?我遇到了以下问题:如果不在测试仪上运行 EA,dll 运行正常。而在测试仪上运行时,却出现以下错误:"C:\Users\...\MQL5\Libraries\MQLMySQL.dll' [126]"。这导致无法在历史数据上测试 EA。

问题背景:我使用数据库加载交易输入参数。我还会在交易后保存必要的信息。该错误只出现在测试器上


我尝试做的事情

- 添加 #属性 tester_library "MQLMySQL.dll"

- 单独完整地写入 dll 的路径

- 仔细检查未加载的文件是否在文件夹中。

没有任何帮助,文件在文件夹中,但我无法加载它。请告诉我还能在哪里找到它。

 

请确认我使用的连接字符串是否正确。

我使用 "127.0.0.1 "作为主机

我使用了带引号的用户、密码和数据库(3 个独立参数)

然后,我将套接字设置为 "NULL",将客户标志设置为 "0"。

(我的系统是 Win 10)


当我尝试执行插入操作时,出现了一个错误,提示没有数据库连接