Discussão do artigo "Como acessar o banco de dados MySQL a partir do MQL5 (MQL4)" - página 9
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
O MT4 build 890 x32 acabou de ser verificado. Tudo está funcionando.
Registro da execução dos scripts de teste:
Pessoal, por favor, esclareçam:
1. Em que operação ocorre a mensagem"Access violation read"??
2. Ao executar o script MySQL-001, qual versão do MQLMySQL é exibida na guia Experts? Deveria ser: MQLMySQL v2.2 x32 Copyright © 2014, FxCodex Laboratory.
3. Qual é a versão do banco de dados MySQL?
4. o MySQL é usado localmente ou em um host remoto?
5. Em qual sistema operacional você executa o terminal?
Verifique e informe, pois não consigo reproduzir o erro.
Vou criar um ambiente semelhante e testar.
Estou usando o MT4 (950). Peguei os arquivos do arquivo anexado ao artigo. Entendi corretamente que não é a versão mais recente: MySQL-001 EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory.
Ele não lê os dados do arquivo de configuração.
Eu uso o MT4 (950). Peguei os arquivos do arquivo anexado ao artigo. Entendi corretamente que não é a versão mais recente: MySQL-001 EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory
Ele não lê os dados do arquivo de configuração.
Sim, a v2.0 é antiga. Eu já postei versões mais recentes na discussão do artigo.
Vou anexá-la agora.
MQLMySQL v2.2 - Fontes do projeto DLL para x64 e x86
Tente algo a partir disso. Parece ser a versão mais recente.
Com base no erro que vejo no seu registro: 0 11:09:37.742 MySQL-002 EURUSD,H1: A tabela `table` não pode ser criada.
Você está usando o nome "table", que é a palavra-chave do banco de dados mysql e não pode ser usado como nome de tabela. Tente mudar para "table1", por exemplo, apenas para verificar se funciona.
É possível que o banco de dados não tenha sido selecionado ou não tenha sido definido. Você pode executar o comando "USE database_name" logo após a conexão, em que database_name é o nome do seu banco de dados.
Por exemplo, se meu banco de dados for "mysql":
DB = MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);
if (DB ==-1) { Print ("Connection failed! Error: "+MySqlErrorDescription); } else { Print ("Connected! DBID#",DB);}
MySqlExecute(DB, "USE mysql");
Bem, segui suas sugestões para o nome das tabelas e o comando MySqlExecute(DB, "USE mt4"), mas ainda recebo a mensagem de erro:
0 12:51:40.534 Script MySQL-002new EURUSD,M1: carregado com sucesso
0 12:51:40.549 MySQL-002new EURUSD,M1: inicializado
0 12:51:40.549 MySQL-002new EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory
0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , User: , Database:
0 12:51:40.549 MySQL-002new EURUSD,M1: Conectando...
0 12:51:40.565 MySQL-002new EURUSD,M1: Conectado! DBID#0
0 12:51:40.565 MySQL-002new EURUSD,M1: A tabela `test_table` não pode ser criada. Error: Aucune base n'a ?t? s?lectionn?e
0 12:51:40.565 MySQL-002new EURUSD,M1: Desconectado. Script concluído!
0 12:51:40.565 MySQL-002new EURUSD,M1: uninit reason 0
0 12:51:40.565 Script MySQL-002new EURUSD,M1: removido
Olá , Eugeniy Lugovoy,
Muito obrigado por seu projeto útil.
Estou tentando ler um campo de cadeia de caracteres de uma tabela com cerca de 3.000 caracteres, usei o "MySqlGetFieldAsString" assim:
if (Cursor >= 0)
{
Rows = MySqlCursorRows(Cursor);
for (int i=0; i<Rows; i++)
se (MySqlCursorFetchRow(Cursor))
{
Get_Setting = MySqlGetFieldAsString(Cursor, 4);
}
.....
Mas o problema é que Get_String me retorna apenas 1.025 caracteres,
Preciso ler esse campo completamente.
Você pode me ajudar a resolver isso?
Atenciosamente
Olá , Eugeniy Lugovoy,
Muito obrigado por seu projeto útil.
Estou tentando ler um campo de cadeia de caracteres de uma tabela com cerca de 3.000 caracteres, usei o "MySqlGetFieldAsString" assim:
if (Cursor >= 0)
{
Rows = MySqlCursorRows(Cursor);
for (int i=0; i<Rows; i++)
se (MySqlCursorFetchRow(Cursor))
{
Get_Setting = MySqlGetFieldAsString(Cursor, 4);
}
.....
Mas o problema é que Get_String me retorna apenas 1.025 caracteres,
Preciso ler esse campo completamente.
Você pode me ajudar a resolver isso?
Considerações
Bem, segui suas sugestões para o nome das tabelas e o comando MySqlExecute(DB, "USE mt4"), mas ainda recebo a mensagem de erro:
0 12:51:40.534 Script MySQL-002new EURUSD,M1: carregado com sucesso
0 12:51:40.549 MySQL-002new EURUSD,M1: inicializado
0 12:51:40.549 MySQL-002new EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory
0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , User: , Database:
0 12:51:40.549 MySQL-002new EURUSD,M1: Conectando...
0 12:51:40.565 MySQL-002new EURUSD,M1: Conectado! DBID#0
0 12:51:40.565 MySQL-002new EURUSD,M1: A tabela `test_table` não pode ser criada. Error: Aucune base n'a ?t? s?lectionn?e
0 12:51:40.565 MySQL-002new EURUSD,M1: Desconectado. Script concluído!
0 12:51:40.565 MySQL-002new EURUSD,M1: uninit reason 0
0 12:51:40.565 Script MySQL-002new EURUSD,M1: removido
Excelente!
Estou usando a MQL5 para gerar dados para a MQL4.
Tudo funcionou perfeitamente, exceto pelo fato de eu ter que remover as aspas simples em torno do nome da tabela no comando de consulta
Query ="SELECT Symbol,Composite,Pattern FROM summarytable";
funciona bem
Excelente!
Estou usando a MQL5 para gerar dados para a MQL4.
Tudo funcionou perfeitamente, exceto pelo fato de eu ter que remover as aspas simples em torno do nome da tabela no comando de consulta
Query ="SELECT Symbol,Composite,Pattern FROM summarytable";
funciona bem
Sim, é possível usar sem aspas se você não planeja nomear tabelas com letras maiúsculas e minúsculas (o mysql diferencia maiúsculas de minúsculas) e símbolos especiais. A propósito, não se trata do símbolo de aspas simples "'", mas sim de "`"
Portanto, sua consulta também poderia ser: Query ="SELECT `Symbol`,`Composite`,`Pattern` FROM `summarytable`";
se você quiser nomear as colunas como Symbol, mas não como símbolo ou SYMBOL
Oi Eugeniy,
Obrigado por seu módulo, muito útil. Você poderia me ajudar a adicionar uma função para obter o nome do campo ou como eu poderia adicioná-la no VC++?
Como você está!
sistema win10 64x, não é possível se conectar ao banco de dados, você pode me ajudar?