Discussão do artigo "Como acessar o banco de dados MySQL a partir do MQL5 (MQL4)" - página 5

 

Olá, senhor ,meu MT4 mostra :Falha na conexão! Erro: Máximo de conexões excedido. - Como posso lidar com esse problema? - Acho que o máximo de conexões é 32, como posso aumentar as conexões para 64?

Obrigado pela ajuda, senhor.

 
illman:

Olá, senhor ,meu MT4 mostra :Falha na conexão! Erro: Máximo de conexões excedido. - Como posso lidar com esse problema? - Acho que o máximo de conexões é 32, como posso aumentar as conexões para 64?

Obrigado pela ajuda, senhor.

Olá,

Sim, o número máximo de conexões é 32

Você está tentando usar o programa MQL baseado no MQLMySQL.dll em mais de 32 gráficos simultaneamente?

Ou você simplesmente se esqueceu de fechar a conexão em seu programa?

Para alterar a conexão máxima de 32 para outra, você precisa reconstruir a MQLMySQL.DLL. Os códigos-fonte estão anexados ao artigo, você precisa:

1. Descompactar os códigos-fonte de "MQLMySQL DLL Project MSVS-2010.zip"

2. Carregar o projeto no MS Visual Studio 2010 ou superior

3. Abra o arquivo "MQLMySQL.h"

4. Encontre a string:

// definição do banco de dados
#define  MAX_CONNECTIONS 32

e substitua o valor 32 por 64 ou o que você quiser

// definição do banco de dados
#define  MAX_CONNECTIONS 64

5. Reconstrua o projeto

6. Substitua uma DLL antiga em sua pasta de dados do Metatrader pela nova compilada.

Atenciosamente,

Eugênio

 

elugovoy:

Você explicou de forma muito clara: como uso muitos dados estranhos no meu índice, as conexões se tornam muito grandes e, quando ultrapassam 32, o MT4 aponta um "erro" e não mostra nada nas janelas de índice.

Obrigado por sua ajuda gentil e seu esforço em desenvolver tudo isso!


Olá,

Sim, o número máximo de conexões é 32

Você está tentando usar o seu programa MQL baseado no MQLMySQL.dll em mais de 32 gráficos simultaneamente?

Ou você simplesmente se esqueceu de fechar a conexão em seu programa?

Para alterar a conexão máxima de 32 para outra, você precisa reconstruir a MQLMySQL.DLL. Os códigos-fonte estão anexados ao artigo, você precisa:

1. Descompactar os códigos-fonte de "MQLMySQL DLL Project MSVS-2010.zip"

2. Carregar o projeto no MS Visual Studio 2010 ou superior

3. Abra o arquivo "MQLMySQL.h"

4. Encontre a string:

e substitua o valor 32 por 64 ou o que você quiser

5. Reconstrua o projeto

6. Substitua uma DLL antiga em sua pasta de dados do Metatrader pela nova compilada.

Atenciosamente,

Eugênio

 

Primeiramente, obrigado pela biblioteca, é de longe a melhor solução disponível e a mais documentada.

Gostaria de saber se há alguma maneira de obter as linhas afetadas após uma instrução de atualização, a fim de executar uma inserção se os registros atualizados forem 0 (a atualização é bem-sucedida, mas não atualiza nenhum registro porque as condições do filtro "where").

Não quero usar um "insert on duplicate key update" porque 99,9% das vezes a instrução de atualização atualizará efetivamente um registro (já existente) e, portanto, não há necessidade de executar a inserção. Acho que há um impacto no desempenho ao tentar inserir sempre sem necessidade.

Desde já, obrigado!

 
jmhoms:

Primeiramente, obrigado pela biblioteca, é de longe a melhor solução disponível e a mais documentada.

Gostaria de saber se há alguma maneira de obter as linhas afetadas após uma instrução de atualização, a fim de executar uma inserção se os registros atualizados forem 0 (a atualização é bem-sucedida, mas não atualiza nenhum registro porque as condições do filtro "where").

Não quero usar um "insert on duplicate key update" porque 99,9% das vezes a instrução de atualização atualizará efetivamente um registro (já existente) e, portanto, não há necessidade de executar a inserção. Acho que há um impacto no desempenho ao tentar inserir sempre sem necessidade.

Desde já, obrigado!

Olá, caro amigo,

Se você tiver o MSVC 2010, poderá baixar os códigos-fonte da MQLMySQL.DLL e adicionar a função de que precisa; a API C++ do MySQL tem essa função (http://dev.mysql.com/doc/refman/5.0/en/mysql-affected-rows.html)

Ou posso fazer isso para você, mas no momento não tenho tempo para isso, posso fazer no fim de semana (7 e 8 de março de 2015), tudo bem para você?

Atenciosamente,

Eugênio

 
elugovoy:

Olá, caro amigo,

Se você tiver o MSVC 2010, poderá baixar os códigos-fonte da MQLMySQL.DLL e adicionar a função de que precisa; a API MySQL C++ tem essa função(http://dev.mysql.com/doc/refman/5.0/en/mysql-affected-rows.html)

Ou posso fazer isso para você, mas no momento não tenho tempo para isso, posso fazer no fim de semana (7 e 8 de março de 2015), tudo bem para você?

Atenciosamente,

Eugene

É claro que funciona para mim !!!

Muito obrigado.

Josep M.

 

Olá, Eugeniy,

Você teve a oportunidade de dar uma olhada no recurso "linhas afetadas"?

Saudações,

Josep M.

 
jmhoms:

Olá, Eugeniy,

Você teve a oportunidade de dar uma olhada no recurso "linhas afetadas"?

Saudações,

Josep M.

Olá, Josep,

Respondi em uma mensagem privada.

De qualquer forma, estou postando aqui a versão 2.2. Testada no MT4. Se você tiver problemas com o MT5 (x32/x64), é só me avisar.

Bom trabalho!

Arquivos anexados:
MQL4_x32.zip  1073 kb
MQL5_x32.zip  1073 kb
MQL5_x64.zip  1076 kb
MQLMySQL_v2_2.zip  5072 kb
 
elugovoy:
Para plataformas x64, use a seguinte biblioteca (com discussão)
Violação de acesso lida em 0x72656472
 

Olá, qual versão do terminal MT5 você está usando?

Qual versão do terminal MT5 você está usando?

Tente a atualização mais recente das bibliotecas MQLMySQL, anexada aqui.

Arquivos anexados:
MQL4_x32.zip  1073 kb
MQL5_x32.zip  1073 kb
MQL5_x64.zip  1076 kb
MQLMySQL_v2_2.zip  5072 kb