文章 "如何从 MQL5 (MQL4) 访问 MySQL 数据库" - 页 29 1...222324252627282930 新评论 Eugeniy Lugovoy 2023.03.08 23:54 #281 Viktor Vasilyuk #:谢谢你的解释。我不可能什么都知道,这就是我问这个问题的原因。我在这里 找到了自己的解决方案。附:检查了 SELECT - 可以使用 好吧,查询结果的转换是允许的,但不要忘了你在表级别定义了 utf8mb4,也就是说,默认情况下所有字段都使用 varchar,如果你在查询中为文本字段设置了条件,MySQL 会尝试隐式转换。如果考虑到可能会在文本列上建立索引,那么优化器在这种转换过程中就可能无法识别它......从而导致查询性能问题。因此,最好在表级别和列定义级别都对此类问题进行控制。 Viktor Vasilyuk 2023.03.09 09:41 #282 Eugeniy Lugovoy #: 查询结果转换是允许的,但不要忘了你在表级别定义了 utf8mb4,即默认情况下所有字段都使用 varchar,如果你在查询中对文本字段设置了条件,MySQL 会尝试隐式转换它。如果考虑到可能会在文本列上建立索引,那么优化程序在转换过程中就可能无法识别它......从而影响查询性能。 因此,最好在表级别和列定义级别都对此类问题进行控制。 有一个描述字段。类似于 "注释",这个字段不是必须的,只是一个文本解释。没有索引。 MySQL 默认使用 utf8mb4。你能告诉我下次如何在 DDL 中指定吗? 要更改什么内容和编码? mattlaguardia 2024.02.23 20:39 #283 出于好奇,MQLmySQL 对数据库类型挑剔吗? 我们遇到了一个问题,在迁移到新数据库之前,我们的脚本一直可以连接到数据库。 突然,我们遇到了读/写/删除问题。 3306 端口的所有权限都已启用,新数据库只是旧数据库的一个副本。 有什么想法吗? pobo123 2024.05.06 11:57 #284 Boaz Nyagaka Moses #: 我一直收到这样的错误: 2022.03.02 20:22:25.198 MySQL-001 EURUSD,M15: Connection error #2059 Authentication plugin 'caching_sha2_password' cannot be loaded:找不到指定模块。 您设法解决了这个问题吗? Andres Lume 2024.10.10 21:11 #285 有没有办法知道在 MySqlCursorFetchRow 之后可以检索的字段数量? 也许是某个隐藏函数,如 RowFieldsSize ... 据我所知,如果没有字段,MySqlGetFieldAsString 会返回空值。但如果 String Field 特别包含一个空字段,它也会返回空。也就是说,并不是每次都能通过暴力手段追踪到字段的数量。 作为拐杖,你可以先通过 sql 命令找出字段,然后再选择一次,但这已经是不必要的选择了。 请开发这个库,它非常有用。当然,很久以前就有一对夫妇将 mysql 内置到 mt 中了。 Andres Lume 2024.10.22 20:22 #286 插入和更新查询 - 查询限制只有 16 kb? 如果查询超过 16.000 个字符,metatrader 就会崩溃(关闭)。 我附上一个更新 32.000 个字符的示例。 数据库中的更新字段 - LONGTEXT 附加的文件: test2.txt 64 kb Maxim Kuznetsov 2024.10.22 21:23 #287 andreysneg #:插入和更新查询 - 仅有 16kb 的查询限制?如果查询超过 16.000 个字符,metatrader 就会崩溃(关闭)。我在附件中提供了一个 32.000 个字符的 UPDATE 查询示例。数据库中的更新字段 - LONGTEXT 这更像是 MQL 中的行大小限制 :-( 您可以写得更紧凑 REPLACE d1 ("t", "o", "h", "l", "c") VALUES (time1,open1,high1,low1,close1), (time2,open2,high2,low2,close2) .... 和/或将两个查询合并为一个事务,将其拆分为两个查询 Alex FXPIP 2024.11.01 18:28 #288 您好!请教专家一个问题--我可以从 MySQL 到 MT5 读取多少数据以及多久读取一次? 例如,我有 50 000 个元素的数据,我每 0.1 秒在表中更新一次(数字)。MT5 能否从 MySQL 中读取这些数据并每 0.1 秒更新一次?这篇文章中给出的每 1 次查询 KB 的功能是否有任何限制? Eugeniy Lugovoy 2024.12.13 15:47 #289 Alex Renko #: 您好!请教专家一个问题--我可以从 MySQL 到 MT5 读取多少数据以及多久读取一次? 例如,我有 50 000 个元素的数据,我每 0.1 秒在表中更新一次(数字)。MT5 能否从 MySQL 中读取这些数据并每 0.1 秒更新一次?这篇文章中给出的 KB 1 查询功能是否有任何限制? 这个问题很有意思... 我必须说,对返回的 SELECT 查询行数没有限制。 查询本身的大小限制是 64 Kb。因此,如果您要更新 50K 行数据,最好将它们分成几批,比如每批 1000 行,然后发送 50 个查询。 至于 100 毫秒的速度,如果数据库在一台服务器上,而执行 MQL 的终端与数据库的连接有点远,那么很可能会遇到网络延迟,其大小为 ping....。 例如,如果数据库服务器和终端之间的 ping 为 60 毫秒,则服务器的实际响应延迟 = 60 毫秒(查询)+ 数据库端的查询处理时间 + 60 毫秒(响应)。 本项目只是一个简单的包装器,用于访问动态 mysql 库的功能。 这套功能仅限于实际有用的主要功能,你可以进行扩展,添加你需要的功能,比如添加对异步查询的支持,然后你就可以在 1000 行中发送所有 50 个查询,而无需依次等待每个查询的执行。 附注:你可以在 Github 上看到库源和预设限制(https://github.com/elugovoy/MQLMySQL-Project/tree/master/MQLMySQL)。 附注:您也可以下载、自行修改、编译和测试。 MQLMySQL-Project/MQLMySQL at master · elugovoy/MQLMySQL-Project elugovoygithub.com MQL & DLL libraries for working with MySQL database - elugovoy/MQLMySQL-Project Eugeniy Lugovoy 2024.12.13 15:58 #290 andreysneg #:有没有办法知道 MySqlCursorFetchRow 之后可以检索的字段数量?也许有一些隐藏函数,如 RowFieldsSize ...据我所知,如果没有字段,MySqlGetFieldAsString 会返回空值。但如果字符串字段特别包含一个空字段,它也会返回空值。也就是说,并不是每次都能通过暴力手段跟踪字段的数量。作为一种辅助手段,你可以先通过 sql 命令找出字段,然后再选择一次,但这已经是不必要的选择了。请开发这个库,它非常有用。当然,mysql 早就应该内置于 mt 中了。 嗯...什么样的查询对你来说如此棘手,以至于有必要确定它返回的字段数? 通常在 SELECT 命令中只列出特定情况下需要的内容。不要使用 SELECT*,只选择你需要的:)这是正常做法。 您不应该制作拐杖,您可以从 Github 获取源代码,并为 mysql_fetch_fields() MySQL API 函数添加一个包装器 1...222324252627282930 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你的解释。我不可能什么都知道,这就是我问这个问题的原因。
我在这里 找到了自己的解决方案。
附:检查了 SELECT - 可以使用
查询结果转换是允许的,但不要忘了你在表级别定义了 utf8mb4,即默认情况下所有字段都使用 varchar,如果你在查询中对文本字段设置了条件,MySQL 会尝试隐式转换它。如果考虑到可能会在文本列上建立索引,那么优化程序在转换过程中就可能无法识别它......从而影响查询性能。
有一个描述字段。类似于 "注释",这个字段不是必须的,只是一个文本解释。没有索引。
MySQL 默认使用 utf8mb4。你能告诉我下次如何在 DDL 中指定吗? 要更改什么内容和编码?
有什么想法吗?
我一直收到这样的错误:
您设法解决了这个问题吗?
有没有办法知道在 MySqlCursorFetchRow 之后可以检索的字段数量?
也许是某个隐藏函数,如 RowFieldsSize ...
据我所知,如果没有字段,MySqlGetFieldAsString 会返回空值。但如果 String Field 特别包含一个空字段,它也会返回空。也就是说,并不是每次都能通过暴力手段追踪到字段的数量。
作为拐杖,你可以先通过 sql 命令找出字段,然后再选择一次,但这已经是不必要的选择了。
请开发这个库,它非常有用。当然,很久以前就有一对夫妇将 mysql 内置到 mt 中了。
插入和更新查询 - 查询限制只有 16 kb?
如果查询超过 16.000 个字符,metatrader 就会崩溃(关闭)。
我附上一个更新 32.000 个字符的示例。
数据库中的更新字段 - LONGTEXT
插入和更新查询 - 仅有 16kb 的查询限制?
如果查询超过 16.000 个字符,metatrader 就会崩溃(关闭)。
我在附件中提供了一个 32.000 个字符的 UPDATE 查询示例。
数据库中的更新字段 - LONGTEXT
这更像是 MQL 中的行大小限制 :-(
您可以写得更紧凑
REPLACE d1 ("t", "o", "h", "l", "c") VALUES (time1,open1,high1,low1,close1), (time2,open2,high2,low2,close2) ....
和/或将两个查询合并为一个事务,将其拆分为两个查询
例如,我有 50 000 个元素的数据,我每 0.1 秒在表中更新一次(数字)。MT5 能否从 MySQL 中读取这些数据并每 0.1 秒更新一次?这篇文章中给出的每 1 次查询 KB 的功能是否有任何限制?
您好!请教专家一个问题--我可以从 MySQL 到 MT5 读取多少数据以及多久读取一次? 例如,我有 50 000 个元素的数据,我每 0.1 秒在表中更新一次(数字)。MT5 能否从 MySQL 中读取这些数据并每 0.1 秒更新一次?这篇文章中给出的 KB 1 查询功能是否有任何限制?
这个问题很有意思...
我必须说,对返回的 SELECT 查询行数没有限制。
查询本身的大小限制是 64 Kb。因此,如果您要更新 50K 行数据,最好将它们分成几批,比如每批 1000 行,然后发送 50 个查询。
至于 100 毫秒的速度,如果数据库在一台服务器上,而执行 MQL 的终端与数据库的连接有点远,那么很可能会遇到网络延迟,其大小为 ping....。
例如,如果数据库服务器和终端之间的 ping 为 60 毫秒,则服务器的实际响应延迟 = 60 毫秒(查询)+ 数据库端的查询处理时间 + 60 毫秒(响应)。
本项目只是一个简单的包装器,用于访问动态 mysql 库的功能。
这套功能仅限于实际有用的主要功能,你可以进行扩展,添加你需要的功能,比如添加对异步查询的支持,然后你就可以在 1000 行中发送所有 50 个查询,而无需依次等待每个查询的执行。
附注:你可以在 Github 上看到库源和预设限制(https://github.com/elugovoy/MQLMySQL-Project/tree/master/MQLMySQL)。
附注:您也可以下载、自行修改、编译和测试。
有没有办法知道 MySqlCursorFetchRow 之后可以检索的字段数量?
也许有一些隐藏函数,如 RowFieldsSize ...
据我所知,如果没有字段,MySqlGetFieldAsString 会返回空值。但如果字符串字段特别包含一个空字段,它也会返回空值。也就是说,并不是每次都能通过暴力手段跟踪字段的数量。
作为一种辅助手段,你可以先通过 sql 命令找出字段,然后再选择一次,但这已经是不必要的选择了。
请开发这个库,它非常有用。当然,mysql 早就应该内置于 mt 中了。
嗯...什么样的查询对你来说如此棘手,以至于有必要确定它返回的字段数?
通常在 SELECT 命令中只列出特定情况下需要的内容。不要使用 SELECT*,只选择你需要的:)这是正常做法。
您不应该制作拐杖,您可以从 Github 获取源代码,并为 mysql_fetch_fields() MySQL API 函数添加一个包装器