1197: Multi-statement transaction required more than 'max_binlog_cache_size' (la transacción de varias sentencias requirió más que 'max_binlog_cache_size')
MySQL¿Qué significa?
Los datos de binlog generados por una sola transacción superaron el límite de memoria/caché definido por max_binlog_cache_size. La transacción no cupo en el binary log, por lo que falló y se revirtió.
¿Por qué ocurre?
Una transacción muy grande (un único INSERT/UPDATE/DELETE de millones de filas o una carga masiva enorme) llenó la caché del binlog. Con el binary logging habilitado (replicación/recuperación a un punto en el tiempo), las transacciones grandes pueden superar fácilmente este límite.
Cómo solucionarlo
Divida la transacción grande en lotes más pequeños; haga COMMIT tras cada lote. Si las transacciones realmente grandes son inevitables, aumente max_binlog_cache_size (y binlog_cache_size si es necesario). En ETL/cargas masivas, una carga por fragmentos con COMMIT intermedios evita tanto este error como los bloqueos mantenidos durante mucho tiempo.
Más entradas de este motor
- 1055Expression not in GROUP BY (only_full_group_by) (expresión que no está en 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 (ejecución de la consulta interrumpida; se superó el tiempo máximo de ejecución)
- 1298Unknown or incorrect time zone
- 1418Function has none of DETERMINISTIC, NO SQL, or READS SQL DATA (binary logging enabled) (la función no tiene DETERMINISTIC, NO SQL ni READS SQL DATA)