1197: Multi-statement transaction required more than 'max_binlog_cache_size' (a transação com vários comandos exigiu mais que 'max_binlog_cache_size')
MySQLO que significa?
Os dados de binlog gerados por uma única transação excederam o limite de memória/cache definido por max_binlog_cache_size. A transação não coube no binary log, por isso falhou e sofreu rollback.
Por que acontece?
Uma transação muito grande (um único INSERT/UPDATE/DELETE de milhões de linhas ou uma carga em massa enorme) encheu o cache do binlog. Com o binary logging habilitado (replicação/recuperação point-in-time), transações grandes podem facilmente exceder esse limite.
Como resolver
Divida a transação grande em lotes menores; faça COMMIT após cada lote. Se transações realmente grandes forem inevitáveis, aumente max_binlog_cache_size (e binlog_cache_size, se necessário). Em cargas ETL/em massa, uma carga em blocos com COMMITs intermediários evita tanto este erro quanto locks mantidos por muito tempo.
Mais entradas deste banco
- 1055Expression not in GROUP BY (only_full_group_by) (expressão que não está no 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 (execução da consulta interrompida; tempo máximo de execução excedido)
- 1298Unknown or incorrect time zone
- 1418Function has none of DETERMINISTIC, NO SQL, or READS SQL DATA (binary logging enabled) (a função não tem DETERMINISTIC, NO SQL nem READS SQL DATA)