Was ist mit caching_sha2_password Unterstützung? Gibt es eine Möglichkeit, damit umzugehen, oder sollte ich einfach mysql_native_password installieren?
Dmitri Custurov: Was ist mit caching_sha2_password Unterstützung? Gibt es eine Möglichkeit, damit umzugehen oder einfach mysql_native_password zu installieren?
Hy wird bisher nur nativ unterstützt. Braucht jemand wirklich sha2 Unterstützung in dieser Lösung?
Ihr Datenbankserver befindet sich also nicht lokal oder sogar unter vpn?
Hallo @EugeniyLugovoy und vielen Dank für Ihre harte Arbeit!
Gibt es in der aktuellen Version Ihrer Implementierung eine Möglichkeit, die "LAST_INSERT_ID" nach einem INSERT-Vorgang (in einer Tabelle mit einer AUTO_INCREMENT-Spalte) abzurufen?
Vielen Dank im Voraus und noch einen schönen Tag :)
Hallo @EugeniyLugovoy und vielen Dank für Ihre harte Arbeit!
Gibt es in der aktuellen Version Ihrer Implementierung eine Möglichkeit, die "LAST_INSERT_ID" nach einem INSERT-Vorgang (in einer Tabelle mit einer AUTO_INCREMENT-Spalte) abzurufen?
Vielen Dank im Voraus und noch einen schönen Tag :)
Hallo arsenico42, Sie können versuchen, die Einfügung in einer Abfrage zu machen und dann LAST_INSERT_ID in einer anderen auszuwählen, aber ich kann diesen Weg nicht empfehlen, weil LAST_INSERT_ID eine Funktion ist, die eine globale Datenbankvariable zurückgibt, und eine andere Einfügung (von einem anderen Benutzer, die gleichzeitig läuft) zwischen Ihrer ursprünglichen Einfügung und der Auswahl von LAST_INSERT_ID den Wert von LAST_INSERT_ID beeinflussen kann.
Das hängt nicht von der Bibliothek ab, sondern davon, wie mysql/mariadb funktioniert.
Aber ich kann Ihnen raten, eine Funktion auf der Datenbankseite zu erstellen, um die erforderlichen Werte einzufügen, LAST_INSERT_ID auszuwählen und diese ID als Funktionswert zurückzugeben. es könnte so aussehen:
CREATE FUNCTION `import_funds_add`(
`p_file_name` varchar(64),
`p_full_path` varchar(2000),
`p_status` VARCHAR(10),
`p_error` VARCHAR(2000)
)
RETURNS bigint(20)
LANGUAGE SQL
NOT DETERMINISTIC
MODIFIES SQL DATA
BEGIN
declare id bigint;
INSERT INTO import_funds(`file_name`, `full_path`, `status`, `error`, `creation_date`)
VALUES (p_file_name, p_full_path, p_status, p_error, now());
SELECT LAST_INSERT_ID() INTO id;
RETURN(id);
END;;
Und in MQL müssen Sie einen Cursor für die Abfrage öffnen:
qry="SELECT import_funds_add('bonuses.csv','c:\\broker imports\\XXX-FX','NEW','No errors') as last_id";
dann den Wert aus dem üblichen Cursor holen und den Cursor schließen.
Anstatt diese Befehle separat in MQL zu verwenden, können Sie sie einfach auf der DB-Seite zu einer Funktion kombinieren.
Ich versuche, Ihre Beispiele unter MT5 zu verwenden, aber ich bekomme diesen Fehler:
2014.12.15 15:44:16.387 MySQL-001'C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' ist keine 64-bit Version
Führen Sie MT5 unter einer 32-Bit-Umgebung aus?
Könnten Sie mir bitte dabei helfen?
Herzlichen Dank!
Carmine Marrone.
Hallo Carmine, Sie können die x64-Version aus den Quellen auf github herunterladen.
"Aufruf von 'ReadIni' nicht möglich, '..\libraries\MQLMySQL.dll' ist nicht geladen"
Stellen Sie sicher, dass sich die Dateien MQLMySQL.dll & MQLMySQL.def in Ihrem Ordner "C:\Users\Admin\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\MQL5\libraries\" befinden.
Wie Sie sehen können, wenn Sie MQL-Programme im Tester-Modus ausführen, wäre der Pfad zu den Bibliotheken anders (wegen der UAC)
Fehler bei mehreren Anweisungen: Sie haben einen Fehler in Ihrer SQL-Syntax; lesen Sie im Handbuch zu Ihrer MySQL-Serverversion nach, um die richtige Syntax für die Verwendung bei ...
Fehler bei mehreren Anweisungen: Sie haben einen Fehler in Ihrer SQL-Syntax; lesen Sie im Handbuch zu Ihrer MySQL-Serverversion nach, um die richtige Syntax für die Verwendung bei ...
Vergewissern Sie sich, dass Sie beim Öffnen der Datenbankverbindung das Multi-Statement-Client-Flag gesetzt haben.
int ClientFlag = CLIENT_MULTI_STATEMENTS; // Setzen des Kennzeichens für Mehrfachanweisungenint DB;
DB = MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag); // Verbindung zur Datenbank
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Was ist mit caching_sha2_password Unterstützung? Gibt es eine Möglichkeit, damit umzugehen oder einfach mysql_native_password zu installieren?
Hy wird bisher nur nativ unterstützt. Braucht jemand wirklich sha2 Unterstützung in dieser Lösung?
Ihr Datenbankserver befindet sich also nicht lokal oder sogar unter vpn?
Hallo @EugeniyLugovoy und vielen Dank für Ihre harte Arbeit!
Gibt es in der aktuellen Version Ihrer Implementierung eine Möglichkeit, die "LAST_INSERT_ID" nach einem INSERT-Vorgang (in einer Tabelle mit einer AUTO_INCREMENT-Spalte) abzurufen?
Vielen Dank im Voraus und noch einen schönen Tag :)Hallo @EugeniyLugovoy und vielen Dank für Ihre harte Arbeit!
Gibt es in der aktuellen Version Ihrer Implementierung eine Möglichkeit, die "LAST_INSERT_ID" nach einem INSERT-Vorgang (in einer Tabelle mit einer AUTO_INCREMENT-Spalte) abzurufen?
Vielen Dank im Voraus und noch einen schönen Tag :)Hallo arsenico42, Sie können versuchen, die Einfügung in einer Abfrage zu machen und dann LAST_INSERT_ID in einer anderen auszuwählen, aber ich kann diesen Weg nicht empfehlen, weil LAST_INSERT_ID eine Funktion ist, die eine globale Datenbankvariable zurückgibt, und eine andere Einfügung (von einem anderen Benutzer, die gleichzeitig läuft) zwischen Ihrer ursprünglichen Einfügung und der Auswahl von LAST_INSERT_ID den Wert von LAST_INSERT_ID beeinflussen kann.
Das hängt nicht von der Bibliothek ab, sondern davon, wie mysql/mariadb funktioniert.
Aber ich kann Ihnen raten, eine Funktion auf der Datenbankseite zu erstellen, um die erforderlichen Werte einzufügen, LAST_INSERT_ID auszuwählen und diese ID als Funktionswert zurückzugeben. es könnte so aussehen:
Und in MQL müssen Sie einen Cursor für die Abfrage öffnen:
qry="SELECT import_funds_add('bonuses.csv','c:\\broker imports\\XXX-FX','NEW','No errors') as last_id";dann den Wert aus dem üblichen Cursor holen und den Cursor schließen.
Anstatt diese Befehle separat in MQL zu verwenden, können Sie sie einfach auf der DB-Seite zu einer Funktion kombinieren.
Das ist nur ein Beispiel aus dem Live-System.
Hallo elugovoy
Toller Artikel und tolle Bibliotheken.
Ich versuche, Ihre Beispiele unter MT5 zu verwenden, aber ich bekomme diesen Fehler:
2014.12.15 15:44:16.387 MySQL-001 'C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' ist keine 64-bit Version
Führen Sie MT5 unter einer 32-Bit-Umgebung aus?
Könnten Sie mir bitte dabei helfen?
Herzlichen Dank!
Carmine Marrone.
Hallo Carmine, Sie können die x64-Version aus den Quellen auf github herunterladen.
https://github.com/elugovoy/MQLMySQL-Project/tree/master/MQLMySQL/x64/Release
Hallo @Eugeniy Lugovoy, zunächst einmal vielen Dank für die vielen Beiträge zur Community
Ich stecke hier fest:
"Cannot load 'C:\Users\Admin\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\MQL5\libraries\MQLMySQL.dll'" [126]
Hallo @Eugeniy Lugovoy, zunächst einmal vielen Dank für den Beitrag zur Gemeinschaft
Ich stecke hier fest:
"Cannot load 'C:\Users\Admin\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\MQL5\libraries\MQLMySQL.dll'" [126]
Stellen Sie sicher, dass sich die Dateien MQLMySQL.dll & MQLMySQL.def in Ihrem Ordner "C:\Users\Admin\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\MQL5\libraries\" befinden.
Wie Sie sehen können, wenn Sie MQL-Programme im Tester-Modus ausführen, wäre der Pfad zu den Bibliotheken anders (wegen der UAC)
Multi-Insert bekommt Fehler.
Fehler bei mehreren Anweisungen: Sie haben einen Fehler in Ihrer SQL-Syntax; lesen Sie im Handbuch zu Ihrer MySQL-Serverversion nach, um die richtige Syntax für die Verwendung bei ...
Multi-Insert erhalten Fehler.
Fehler bei mehreren Anweisungen: Sie haben einen Fehler in Ihrer SQL-Syntax; lesen Sie im Handbuch zu Ihrer MySQL-Serverversion nach, um die richtige Syntax für die Verwendung bei ...
Vergewissern Sie sich, dass Sie beim Öffnen der Datenbankverbindung das Multi-Statement-Client-Flag gesetzt haben.