1197: Multi-statement transaction required more than 'max_binlog_cache_size'
MySQLNe demek?
Tek bir transaction'ın ürettiği binlog verisi, max_binlog_cache_size ile tanımlanan bellek/önbellek sınırını aştı. Transaction binary log'a sığmadığı için başarısız oldu ve geri alındı.
Neden olur?
Çok büyük bir işlem (milyonlarca satırlık tek bir INSERT/UPDATE/DELETE ya da devasa bir toplu yükleme) binlog önbelleğini doldurdu. Binary logging etkinken (replikasyon/point-in-time recovery) büyük işlemler bu sınırı kolayca aşabilir.
Nasıl çözülür?
Büyük transaction'ı daha küçük parçalara (batch) bölerek işleyin; her partiden sonra COMMIT edin. Gerçekten büyük transaction'lar kaçınılmazsa max_binlog_cache_size değerini (ve gerekirse binlog_cache_size) artırın. ETL/toplu yüklemelerde parçalı yükleme ve ara COMMIT stratejisi hem bu hatayı hem de uzun lock'ları önler.
Aynı motorda diğer kayıtlar
- 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 enabled)