1197: Multi-statement transaction required more than 'max_binlog_cache_size'
MySQLWas bedeutet das?
Die von einer einzelnen Transaktion erzeugten Binlog-Daten haben das durch max_binlog_cache_size festgelegte Speicher-/Cache-Limit überschritten. Die Transaktion passte nicht ins Binary Log, ist daher fehlgeschlagen und wurde zurückgerollt.
Ursache
Eine sehr große Transaktion (ein einzelnes INSERT/UPDATE/DELETE von Millionen Zeilen oder ein riesiger Bulk Load) hat den Binlog-Cache gefüllt. Bei aktiviertem Binary Logging (Replikation/Point-in-Time-Recovery) können große Transaktionen dieses Limit leicht überschreiten.
Lösung
Teile die große Transaktion in kleinere Batches auf; führe nach jedem Batch COMMIT aus. Sind wirklich große Transaktionen unvermeidbar, erhöhe max_binlog_cache_size (und bei Bedarf binlog_cache_size). Bei ETL/Bulk Loads verhindert ein Laden in Blöcken mit zwischenzeitlichen COMMITs sowohl diesen Fehler als auch lange gehaltene Sperren.
Weitere Einträge zu dieser Datenbank
- 1055Expression not in GROUP BY (only_full_group_by)
- 1267Illegal mix of collations
- 1030Got error N from storage engine
- 1785Statement violates GTID consistency
- 3024Query execution was interrupted, maximum statement execution time exceeded
- 1298Unknown or incorrect time zone
- 1418Function has none of DETERMINISTIC, NO SQL, or READS SQL DATA (Binary Logging aktiviert)