Diskussion zum Artikel "Verwendung von Netzwerkfunktionen oder MySQL ohne DLL: Teil II - Programm zur Überwachung von Änderungen der Signaleigenschaften" - Seite 2
Ich versuche gerade, den MySQL-Teil des Systems zu verwenden, aber ich erhalte immer wieder die Fehlermeldung "No database selected" - selbst wenn ich den Befehl "use `mytable`" gebe.
Haben Sie eine Idee, warum das so ist?
Ist in Ihrem Fall `mytable` der Name der Datenbank oder der Tabelle? Auf USE muss der Name der Datenbank folgen, nicht aber der der Tabelle.
Ich verwende den Datenbanknamen in der "USE"-Abfrage.
Außerdem habe ich beim Entfernen der EA folgendes festgestellt:
2021.08.2001:20:24.248 Sync (EURUSD,H1) 6 undeleted objects left
2021.08.2001:20:24.248 Sync (EURUSD,H1) 1object of type CMySQLTransaction left
2021.08.2001:20:24.248 Sync (EURUSD,H1) 1object of type CMySQLPacket left
2021.08.2001:20:24.248 Sync (EURUSD,H1) 1object of type CData left
2021.08.2001:20:24.248 Sync (EURUSD,H1) 1object of type CMySQLLoginRequest left
2021.08.2001:20:24.248 Sync (EURUSD,H1) 2 objects of type CMySQLPacketReader left
2021.08.2001:20:24.248 Sync (EURUSD,H1) 1024 bytes of leaked memory
Ich würde die Bibliothek wirklich gerne zum Laufen bringen, da ich die von den anderen MySQL-Lösungen verwendeten DLLs vermeiden möchte.
ENUM_TRANSACTION_STATE res = Incoming(buf,rsp_len);
Ich erhalte IN_PROGRESS und immer noch keine Berechtigung für die Zeitüberschreitung. Die Daten sind genau richtig.
Hier erhalte ich die ganze Zeit ...IN_PROGRESS. Wo soll ich suchen?
Irgendetwas ist schief gelaufen, nachdem ich dem Server das Login und das Passwort geschickt habe.
Wenn die Daten falsch wären, würde ein Fehler auftreten, nicht eine Zeitüberschreitung. Entweder hat der Server nicht geantwortet, oder er hat mit etwas geantwortet, das die Bibliothek nicht versteht.
Gibt es eine Möglichkeit, die Netzwerk-Paketaufzeichnungen zu sehen? Welche Version des MySQL-Servers?
Beim Senden von Login und Passwort an den Server ist etwas schief gelaufen.
Wären die Daten falsch gewesen, hätte es einen Fehler gegeben, nicht eine Zeitüberschreitung. Aber entweder hat der Server nicht geantwortet, oder er hat mit etwas geantwortet, das die Bibliothek nicht verstanden hat.
Gibt es eine Möglichkeit, die Netzwerk-Paketaufzeichnungen zu sehen? Welche Version des MySQL-Servers?
Und auf einer laufenden Instanz (altes mysql) erhalte ich dies von Zeit zu Zeit:
2021.09.09 16:57:18.818 prices_to_mysql array out of range in 'MySQLTransaction.mqh' (367,37)
Hier auf data[ptr]:
ENUM_TRANSACTION_STATE CMySQLTransaction::Incoming(uchar &data[], uint len)
{
int ptr=0; // Index des aktuellen Bytes im Datenpuffer
ENUM_TRANSACTION_STATE result=MYSQL_TRANSACTION_IN_PROGRESS; // Ergebnis der Verarbeitung der empfangenen Datenwhile(len>0)
{
if(m_packet.total_length==0)
{
//--- Wenn die Anzahl der Daten im Paket unbekannt istwhile(m_rcv_len<4 && len>0)
{
m_hdr[m_rcv_len] = data[ptr];
m_rcv_len++;
ptr++;
len--;
}
Ich versuche gerade, den MySQL-Teil des Systems zu verwenden, aber ich erhalte immer wieder die Fehlermeldung "No database selected" - selbst wenn ich den Befehl "use `mytable`" gebe.
Haben Sie eine Idee, warum das so ist?
Ich verwende den Datenbanknamen in der "USE"-Abfrage.
Außerdem habe ich beim Entfernen der EA folgendes festgestellt:
Ich würde die Bibliothek wirklich gerne zum Laufen bringen, da ich die von den anderen MySQL-Lösungen verwendeten DLLs vermeiden möchte.
Bin mir nicht sicher, was es bedeutet:
Transaktionsfehler: MYSQL_ERR_AUTHORIZATION_TIMEOUT
Hier
ENUM_TRANSACTION_STATE res = Incoming(buf,rsp_len);
Ich erhalte IN_PROGRESS und immer noch keine Autorisierung für den Timeout. Die Daten sind genau richtig.
Hier erhalte ich die ganze Zeit ...IN_PROGRESS. Wo soll ich suchen?
Ich weiß nicht, was das bedeutet:
Transaktionsfehler: MYSQL_ERR_AUTHORIZATION_TIMEOUT
Hier ist es
ENUM_TRANSACTION_STATE res = Incoming(buf,rsp_len);
Ich erhalte IN_PROGRESS und immer noch keine Berechtigung für die Zeitüberschreitung. Die Daten sind genau richtig.
Hier erhalte ich die ganze Zeit ...IN_PROGRESS. Wo soll ich suchen?
Irgendetwas ist schief gelaufen, nachdem ich dem Server das Login und das Passwort geschickt habe.
Wenn die Daten falsch wären, würde ein Fehler auftreten, nicht eine Zeitüberschreitung. Entweder hat der Server nicht geantwortet, oder er hat mit etwas geantwortet, das die Bibliothek nicht versteht.
Gibt es eine Möglichkeit, die Netzwerk-Paketaufzeichnungen zu sehen? Welche Version des MySQL-Servers?
Beim Senden von Login und Passwort an den Server ist etwas schief gelaufen.
Wären die Daten falsch gewesen, hätte es einen Fehler gegeben, nicht eine Zeitüberschreitung. Aber entweder hat der Server nicht geantwortet, oder er hat mit etwas geantwortet, das die Bibliothek nicht verstanden hat.
Gibt es eine Möglichkeit, die Netzwerk-Paketaufzeichnungen zu sehen? Welche Version des MySQL-Servers?
Leider wird es ohne das schwer sein, die Ursache zu ermitteln.
Übrigens funktionierte alles mit mysql 5.7. Auf 8.0 funktioniert es nicht.
Und auf einer laufenden Instanz (altes mysql) erhalte ich dies von Zeit zu Zeit:
Hier auf data[ptr]: