Discussione sull’articolo "Come accedere al database MySQL da MQL5 (MQL4)" - pagina 5

 

Salve signore, il mio MT4 mostra: connessione fallita! Errore: Maximum connections exceeded.--come posso affrontare questo problema? Immagino che le connessioni massime siano 32, come posso aumentare le connessioni ad esempio a 64?

grazie per l'aiuto, signore.

 
illman:

Salve signore, il mio MT4 mostra: connessione fallita! Errore: Maximum connections exceeded.--come posso affrontare questo problema? Immagino che le connessioni massime siano 32, come posso aumentare le connessioni ad esempio a 64?

grazie per l'aiuto, signore.

Salve,

Sì, il numero massimo di connessioni è 32

Si sta cercando di utilizzare il programma MQL basato su MQLMySQL.dll su più di 32 grafici contemporaneamente?

Oppure hai dimenticato di chiudere la connessione nel tuo programma?

Per cambiare la connessione massima da 32 a un'altra è necessario ricostruire MQLMySQL.DLL. I sorgenti sono allegati all'articolo, dovete:

1. Decomprimere i sorgenti da "MQLMySQL DLL Project MSVS-2010.zip".

2. Caricare il progetto in MS Visual Studio 2010 o superiore.

3. Aprite il file "MQLMySQL.h".

4. Trovate la stringa:

// definizione del database
#define  MAX_CONNECTIONS 32

e sostituite il valore 32 con 64 o con quello che volete.

// definizione del database
#define  MAX_CONNECTIONS 64

5. Ricostruite il progetto

6. Sostituire una vecchia DLL nella cartella dei dati di Metatrader con una nuova compilata.

Saluti,

Eugene

 

elugovoy:

Hai spiegato molto chiaramente. Poiché utilizzo molti dati estranei per il mio indice, le connessioni diventano molto grandi, se superiori a 32, MT4 segnala un "errore" e non mostra nulla nelle finestre dell'indice.

grazie per il vostro gentile aiuto e per il vostro impegno nello sviluppo di questi programmi!


Ciao,

Sì, il numero massimo di connessioni è 32

State cercando di utilizzare il vostro programma MQL basato su MQLMySQL.dll su più di 32 grafici contemporaneamente?

Oppure avete dimenticato di chiudere la connessione nel vostro programma?

Per cambiare la connessione massima da 32 a un'altra è necessario ricostruire MQLMySQL.DLL. I sorgenti sono allegati all'articolo, dovete:

1. Decomprimere i sorgenti da "MQLMySQL DLL Project MSVS-2010.zip".

2. Caricare il progetto in MS Visual Studio 2010 o superiore.

3. Aprite il file "MQLMySQL.h".

4. Trovate la stringa:

e sostituite il valore 32 con 64 o con quello che volete.

5. Ricostruite il progetto

6. Sostituire una vecchia DLL nella cartella dei dati di Metatrader con una nuova compilata.

Saluti,

Eugene

 

Prima di tutto, grazie per la lib, è di gran lunga la soluzione migliore là fuori e la più documentata.

Mi chiedevo se c'è un modo per ottenere le righe interessate dopo un'istruzione di aggiornamento, al fine di eseguire un inserto se i record aggiornati sono 0 (l'aggiornamento riesce, solo che non aggiorna alcun record a causa delle condizioni del filtro "dove").

Non voglio usare un "insert on duplicate key update" perché il 99,9% delle volte l'istruzione di aggiornamento aggiornerà effettivamente 1 record (già esistente) e quindi non è necessario eseguire l'inserto. Immagino che ci sia un impatto sulle prestazioni cercando di inserire sempre senza necessità.

Grazie in anticipo!

 
jmhoms:

Prima di tutto, grazie per la lib, è di gran lunga la soluzione migliore là fuori e la più documentata.

Mi chiedevo se c'è un modo per ottenere le righe interessate dopo un'istruzione di aggiornamento, al fine di eseguire un inserto se i record aggiornati sono 0 (l'aggiornamento riesce, solo che non aggiorna alcun record a causa delle condizioni del filtro "dove").

Non voglio usare un "insert on duplicate key update" perché il 99,9% delle volte l'istruzione di aggiornamento aggiornerà effettivamente 1 record (già esistente) e quindi non è necessario eseguire l'inserto. Immagino che ci sia un impatto sulle prestazioni cercando di inserire sempre senza necessità.

Grazie in anticipo!

Ciao caro amico,

Se hai MSVC 2010 puoi scaricare i sorgenti di MQLMySQL.DLL e aggiungere la funzione di cui hai bisogno; l'API MySQL C++ ha tale funzione (http://dev.mysql.com/doc/refman/5.0/en/mysql-affected-rows.html).

Oppure posso farlo io per te, ma al momento non ho tempo per questo, posso farlo nel fine settimana (7-8 marzo 2015), va bene per te?

Saluti,

Eugene

 
elugovoy:

Ciao caro amico,

Se hai MSVC 2010 puoi scaricare i sorgenti di MQLMySQL.DLL e aggiungere la funzione di cui hai bisogno; l'API MySQL C++ ha questa funzione(http://dev.mysql.com/doc/refman/5.0/en/mysql-affected-rows.html).

Oppure posso farlo io per te, ma al momento non ho tempo per questo, posso farlo nel fine settimana (7-8 marzo 2015), va bene per te?

Saluti,

Eugene

Naturalmente funziona per me !!!

Grazie mille.

Josep M.

 

Ciao Eugeniy,

hai avuto modo di dare un'occhiata alla funzione "righe interessate"?

Saluti,

Josep M.

 
jmhoms:

Ciao Eugeniy,

hai avuto modo di dare un'occhiata alla funzione "righe interessate"?

Saluti,

Josep M.

Ciao Josep,

Ti ho risposto in un messaggio privato.

Comunque sto postando qui la v2.2. Testata su MT4. Se hai problemi con MT5 (x32/x64) fammi sapere.

Buon lavoro!

File:
MQL4_x32.zip  1073 kb
MQL5_x32.zip  1073 kb
MQL5_x64.zip  1076 kb
MQLMySQL_v2_2.zip  5072 kb
 
elugovoy:
Per le piattaforme x64, utilizzare la seguente libreria (con discussione)
Violazione dell'accesso letto a 0x72656472
 

Ciao, quale versione del terminale MT5 stai utilizzando?

Quale versione del terminale MT5 stai utilizzando?

Prova l'ultimo aggiornamento delle librerie MQLMySQL, allegato qui.

File:
MQL4_x32.zip  1073 kb
MQL5_x32.zip  1073 kb
MQL5_x64.zip  1076 kb
MQLMySQL_v2_2.zip  5072 kb