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

 
Pavel Kolchin:

win 7 x64 - mt5 x64 ultima versione (v5 b1455)

Non riesco ad accedere a MySQL, ma non è un peccato.

Server: Localhost tramite socket UNIX

Tipo di server: Percona Server

Versione del server: 5.5.35-33.0-log - Percona Server (GPL), Release rel33.0, Revisione 611

Versione del protocollo: 10

Utente: ***

Codifica del server: UTF-8 Unicode (utf8)

funziona in mql4
L'errore è stato riprodotto. Lo risolverò...
 

Ecco la ricompilazione x64 per MQL5

Pavel provalo.

File:
MQL5_x64.zip  1412 kb
 
Eugeniy Lugovoy:


nessun problema di connessione con le dll

tutto funziona, grazie

 
Pavel Kolchin:

nessun problema di connessione con le dll

tutto funziona, grazie

Sempre felice di aiutare.

Buona fortuna con i vostri progetti.

 
Yuriy Asaulenko:

Grazie, l'ho letto. C'è un'ottima osservazione da parte dell'autore dell'articolo attuale, che è arrivato,..... e ha rovinato tutto).


Io stesso ho riscontrato più di una volta il problema delle collisioni. Ad esempio, se un robot di trading è collegato a diversi grafici, ma utilizza un'unica base, e l'accesso è a una tabella di uso generale (ad esempio registrazione/cambio di sessioni, conti), allora in ogni caso si otterrà un errore del tipo "tabella bloccata". E non importa se tutte le transazioni sono state completate, i cursori sono stati chiusi e il database è stato aperto in modalità condivisa.


Probabilmente l'autore del commento non ha capito le impostazioni di sqlite, che risolvono tutte le collisioni attraverso la compilazione per la modalità con i lock o attraverso i pragma.

Posso dire che lavoro da diversi anni su progetti pesanti con multithreading simultaneo di lettura/scrittura e non ci sono problemi, la cosa principale è avere le mani dritte.

 
o_O:

Probabilmente l'autore del commento non ha capito le impostazioni di sqlite, che risolvono tutte le collisioni attraverso la compilazione per la modalità con i lock o attraverso i pragma.

Posso dire che lavoro da diversi anni su progetti pesanti con multithreading simultaneo di lettura/scrittura e non ci sono problemi, la cosa principale è avere le mani dritte.

o_O

Semmai posso riprendere quel progetto per SQLite, scrivere script di test/EA e se ci saranno di nuovo dei blocchi, potremo risolverlo insieme (se non ti dispiace) e fornire una soluzione software alla comunità.

Potrebbe valere la pena di prestare attenzione a questo aspetto perché ci sono alcuni vantaggi di un DB (autonomia, SQL, mobilità, incorporabilità, ecc.).

In effetti, ho preso una DLL pronta da SQLite (non il codice sorgente) e non l'ho ricompilata, ma ho semplicemente lavorato con le API C++.

 
Eugeniy Lugovoy:

o_O

Semmai posso riprendere quel progetto per SQLite, scrivere script di test/EA e se ci sono di nuovo blocchi, possiamo risolverlo insieme (se non ti dispiace) e fornire una soluzione software alla comunità.

Potrebbe valere la pena di prestare attenzione a questo aspetto perché ci sono alcuni vantaggi di un DB (autonomia, SQL, mobilità, incorporabilità, ecc.).

In effetti, ho preso una DLL già pronta di SQLite (non il codice sorgente) e non l'ho ricompilata, ma ho solo lavorato con l'API C++.

Sarebbe davvero interessante se il "mito" del locking di SQLite fosse confermato o sfatato. Se non fosse per questa incertezza, o per le soluzioni per affrontarla, SQlite è un'opzione molto interessante per l'interoperabilità. Sarebbe interessante sapere anche qualcosa sulle sue prestazioni, ad esempio rispetto allo stesso database con Access. Naturalmente, se qualcuno ha tempo e voglia di fare questo lavoro.

Ci sono ancora questioni relative al collegamento della base a software di terze parti, che possono essere collegati a qualsiasi database - Access, SQL Server, Oracle e così via. SQLite ha un driver installato sul computer come OLEDB o almeno ODBC? E nello stesso Access diverse applicazioni possono scrivere-leggere sullo stesso database in modo asincrono attraverso interfacce diverse senza alcun problema. Sospetto che questo non funzioni con SQLite.

 
Yuriy Asaulenko:

Sarebbe davvero interessante se il "mito" del locking di SQLite fosse confermato o sfatato. Se non fosse per questa incertezza, o per le soluzioni per eliminarla, SQlite è un'opzione molto interessante per l'interoperabilità. Sarebbe interessante sapere anche qualcosa sulle sue prestazioni, ad esempio rispetto allo stesso database con Access. Naturalmente, se qualcuno ha tempo e voglia di fare questo lavoro.

Ci sono ancora questioni relative al collegamento della base a software di terze parti, che possono essere collegati a qualsiasi database - Access, SQL Server, Oracle e così via. SQLite ha un driver installato sul computer come OLEDB o almeno ODBC? E nello stesso Access diverse applicazioni possono scrivere-leggere sullo stesso database in modo asincrono attraverso interfacce diverse senza alcun problema. Sospetto che questo non funzioni con SQLite.

Beh, OLEDB per SQLite è disponibile, basta cercare su Google. A proposito, un'idea interessante è quella di eseguire script di test sulla localizzazione attraverso OLEDB a SQLite.... pervertito, ovviamente, ma siamo tutti pervertiti qui....

Per quanto riguarda l'accesso nativo, credo che con uno sforzo congiunto si possa ottenere un risultato positivo. È solo una questione di tempo, non potrò farlo questa settimana... forse nel fine settimana troverò un po' di tempo...

 
Eugeniy Lugovoy:

OLEDB per SQLite è disponibile, basta cercare su Google. A proposito, è interessante l'idea di eseguire script di test su loc via OLEDB a SQLite.... perversa, ovviamente, ma siamo tutti pervertiti qui....

Per quanto riguarda l'accesso nativo, credo che con uno sforzo congiunto si possa ottenere un risultato positivo. È solo una questione di tempo, non potrò farlo questa settimana... forse nel fine settimana mi dedicherò del tempo...

Ho un'applicazione che crea un database e vi scrive (non legge) grandi quantità di informazioni in molte tabelle. Se riesco a trovare un driver OLEDB installato sul computer e visibile attraverso le impostazioni dell'applicazione, SQLite può essere facilmente testato per evitare che si blocchi. Allo stesso modo, è possibile connettersi a SQLite con lo stesso Access e provare a leggere e modificare le tabelle in parallelo. Qualcosa da misurare, ovviamente, non sarà possibile.

Guardato attraverso Internet. In una volta tale provider OLEDB non poteva trovare tale provider OLEDB. Tutti più OLEDB DLL, che può essere utilizzato solo da linguaggi di programmazione, per quanto ho capito.

 

ha iniziato a spuntare in continuazione, cosa significa?

Quando eseguo il mio codice su questa linea.

if(DB==-1){DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);}

res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);