Ich benutze Protokollfehler, um Warnung/Fehler in eine Datei zu schreiben. Wenn ich die INSERT IGNORE..SELECT-Anweisung ausführe, schreibe einfach diese Warnmeldungen.Abschaltung mysql unsafe Anweisung Warnung
120905 3:01:23 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT IGNORE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.
Ich möchte mysql Logwriter stoppen Schreiben Sie den Fehler immer wieder und wieder. (Ich kann kein anderes Protokoll sehen, weil sie die gesamte Logdatei ausfüllt ...)
Zuerst füge ich (a, b, c) in eine Tabelle ein. c sollte in der Tabelle eindeutig sein, und a, b werden verwendet, um auszuwählen. Abfrage wird wie diese
SELECT c FROM table WHERE a=value1 AND value2<b AND b<value3
und meine INSERT-Abfrage ist
INSERT IGNORE INTO table VALUES (,,),(,,)...(,,)
Ich dachte, ich die Abfrage nicht Warnung zu erzeugen, ändern könnte, aber meine Daten enthalten eindeutiges Feld, und ich brauche, dass die eingereichten garantieren ist einzigartig in der Tabelle. Und 500 ~ 2000 Zeilen sollten alle paar Sekunden eingefügt werden, also muss ich Massen einfügen.
Wenn bereits Dutzende von Millionen Zeilen eingefügt sind, und ich weitere 2000 Zeilen in wenigen Sekunden einfügen muss. Wie kann ich sie sicher in die Tabelle einfügen, ohne die Logdatei mit den Warnungen zu füllen?
(Ich kann nicht das Binärlog ausschalten, weil ich die MySQL-Replikation verwenden müssen.)
Replizieren Sie die Tabellen - denn wenn Sie diesen Fehler haben, ist signifikant. –
Ja, ich verwende mysql Replikation für Backup, Skalierbarkeit Gründe – user1640242
Also hast du die Fehlermeldung dann gelesen? – zerkms