Diskussion zum Artikel "Wie man auf die MySQL-Datenbank von MQL5 (MQL4) aus zugreift" - Seite 9
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
MT4 build 890 x32 gerade überprüft. Alles funktioniert.
Protokoll der laufenden Testskripte:
Leute, bitte klärt mich auf:
1. Bei welcher Operation gibt es"Access violation read" ?
2. Wenn ich das Skript MySQL-001 ausführe, welche Version von MQLMySQL wird auf der Registerkarte Experten angezeigt? Es sollte sein: MQLMySQL v2.2 x32 Copyright © 2014, FxCodex Laboratory.
3. Welche Version der MySQL-Datenbank?
4. wird MySQL lokal oder auf einem entfernten Host verwendet?
5. Unter welchem Betriebssystem führen Sie das Terminal aus?
Bitte überprüfen Sie das und melden Sie sich, da ich den Fehler nicht reproduzieren kann.
Ich werde eine ähnliche Umgebung erstellen und testen.
Ich verwende MT4 (950). Ich habe die Dateien aus dem Archiv übernommen, das dem Artikel beigefügt ist. Habe ich richtig verstanden, dass es nicht die neueste Version ist?: MySQL-001 EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory.
Es werden keine Daten aus der Konfigurationsdatei gelesen.
Ich verwende MT4 (950). Ich habe die Dateien aus dem Archiv genommen, das dem Artikel beigefügt ist. Habe ich richtig verstanden, dass es nicht die neueste Version ist?: MySQL-001 EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory
Es liest keine Daten aus der Konfigurationsdatei.
Ja, v2.0 ist alt. Ich habe bereits neuere Versionen in der Diskussion des Artikels gepostet.
Ich werde sie jetzt anhängen.
MQLMySQL v2.2 - DLL-Projektquellen für x64 und x86
Versuchen Sie etwas davon. Es scheint die neueste Version zu sein.
Basierend auf Fehler sehe ich aus Ihrem Protokoll: 0 11:09:37.742 MySQL-002 EURUSD,H1: Tabelle `table` kann nicht erstellt werden.
Sie verwenden den Namen "table", der ein Schlüsselwort der Mysql-Datenbank ist und nicht als Tabellenname verwendet werden kann. Versuchen Sie, ihn z.B. in "table1" zu ändern, um zu prüfen, ob es funktioniert.
Sie können den Befehl "USE database_name" direkt nach der Verbindung ausführen, wobei "database_name" der Name Ihrer Datenbank ist.
zum Beispiel, wenn meine Datenbank "mysql" ist:
DB = MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);
if (DB ==-1) { Print ("Verbindung fehlgeschlagen! Fehler: "+MySqlErrorDescription); } else { Print ("Verbunden! DBID#",DB);}
MySqlExecute(DB, "USE mysql");
Ich habe Ihre Vorschläge für die Tabellennamen und den Befehl MySqlExecute(DB, "USE mt4") befolgt, aber ich erhalte immer noch die Fehlermeldung:
0 12:51:40.534 Script MySQL-002new EURUSD,M1: erfolgreich geladen
0 12:51:40.549 MySQL-002new EURUSD,M1: initialisiert
0 12:51:40.549 MySQL-002neu EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory
0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , Benutzer: , Datenbank:
0 12:51:40.549 MySQL-002new EURUSD,M1: Verbinden...
0 12:51:40.565 MySQL-002new EURUSD,M1: Verbunden! DBID#0
0 12:51:40.565 MySQL-002new EURUSD,M1: Tabelle `test_table` kann nicht erstellt werden. Fehler: Aucune base n'a ?t? s?lectionn?e
0 12:51:40.565 MySQL-002new EURUSD,M1: Verbindung unterbrochen. Skript fertig!
0 12:51:40.565 MySQL-002new EURUSD,M1: uninit Grund 0
0 12:51:40.565 Skript MySQL-002new EURUSD,M1: entfernt
Hallo Eugeniy Lugovoy,
Vielen Dank für Ihr nützliches Projekt.
Ich versuche, ein String-Feld aus einer Tabelle zu lesen, dass es etwa 3.000 Zeichen ist, ich verwendet "MySqlGetFieldAsString" wie folgt:
if (Cursor >= 0)
{
Rows = MySqlCursorRows(Cursor);
for (int i=0; i<Rows; i++)
if (MySqlCursorFetchRow(Cursor))
{
Get_Setting = MySqlGetFieldAsString(Cursor, 4);
}
.....
Das Problem ist jedoch, dass Get_String mir nur 1025 Zeichen zurückgibt,
Ich muss das Feld vollständig lesen.
Können Sie mir helfen, dieses Problem zu lösen?
Mit freundlichen Grüßen
Hallo Eugeniy Lugovoy,
Vielen Dank für Ihr nützliches Projekt.
Ich versuche, ein String-Feld aus einer Tabelle zu lesen, dass es etwa 3.000 Zeichen ist, ich verwendet "MySqlGetFieldAsString" wie folgt:
if (Cursor >= 0)
{
Rows = MySqlCursorRows(Cursor);
for (int i=0; i<Rows; i++)
if (MySqlCursorFetchRow(Cursor))
{
Get_Setting = MySqlGetFieldAsString(Cursor, 4);
}
.....
Das Problem ist jedoch, dass Get_String mir nur 1025 Zeichen zurückgibt,
Ich muss das Feld vollständig lesen.
Können Sie mir helfen, dieses Problem zu lösen?
Mit freundlichen Grüßen
Nun, ich habe Ihre Vorschläge für den Tabellennamen und den Befehl MySqlExecute(DB, "USE mt4") befolgt, aber ich erhalte immer noch die Fehlermeldung:
0 12:51:40.534 Script MySQL-002new EURUSD,M1: erfolgreich geladen
0 12:51:40.549 MySQL-002new EURUSD,M1: initialisiert
0 12:51:40.549 MySQL-002neu EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory
0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , Benutzer: , Datenbank:
0 12:51:40.549 MySQL-002new EURUSD,M1: Verbinden...
0 12:51:40.565 MySQL-002new EURUSD,M1: Verbunden! DBID#0
0 12:51:40.565 MySQL-002new EURUSD,M1: Tabelle `test_table` kann nicht erstellt werden. Fehler: Aucune base n'a ?t? s?lectionn?e
0 12:51:40.565 MySQL-002new EURUSD,M1: Verbindung unterbrochen. Skript fertig!
0 12:51:40.565 MySQL-002new EURUSD,M1: uninit Grund 0
0 12:51:40.565 Skript MySQL-002new EURUSD,M1: entfernt
Ausgezeichnet!
Ich verwende MQL5, um Daten für MQL4 zu generieren.
Alles hat wunderbar funktioniert, außer dass ich die einfachen Anführungszeichen um den Tabellennamen im Abfragebefehl entfernen musste
Query ="SELECT Symbol,Composite,Pattern FROM summarytable";
funktioniert gut
Ausgezeichnet!
Ich verwende MQL5, um Daten für MQL4 zu generieren.
Alles hat wunderbar funktioniert, außer dass ich die einfachen Anführungszeichen um den Tabellennamen im Abfragebefehl entfernen musste
Query ="SELECT Symbol,Composite,Pattern FROM summarytable";
funktioniert gut
Ja, es ist möglich, ohne Anführungszeichen zu verwenden, wenn Sie nicht vorhaben, Tabellen mit Groß-/Kleinschreibung (mysql unterscheidet Groß-/Kleinschreibung) und speziellen Symbolen zu benennen. BTW, es ist nicht das einfache Anführungszeichen "'", sondern "`".
Ihre Abfrage könnte also auch lauten: Abfrage ="SELECT `Symbol`,`Zusammensetzung`,`Muster` FROM `Zusammenfassungstabelle`";
wenn Sie die Spalten Symbol, aber nicht Symbol oder SYMBOL nennen wollen
Hallo Eugeniy,
Danke für dein Modul, sehr hilfreich. Könnten Sie helfen, Funktion hinzufügen, um Feldname zu erhalten? oder wie ich es in VC++ hinzufügen könnte?
wie sind Sie !
System win10 64x, Unable to connect to the database, können Sie mir helfen?