1611
MySQLERRORNotableReplicationHIGH confidence

ROW binlog mode but engine requires statement-based logging

Production Risk

Medium — the statement fails; no data is written.

What this means

The binary log format is set to ROW but the statement uses a storage engine that cannot be logged in row format.

Why it happens
  1. 1binlog_format=ROW is set globally, but a statement writes to a storage engine (e.g., certain NDB tables) that requires statement-based logging.
How to reproduce
trigger — this will error
trigger — this will error
SET GLOBAL binlog_format = 'ROW';
-- Then execute a statement on a non-row-capable engine

expected output

ERROR 1611 (HY000): Cannot execute statement: impossible to write to the binary log since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-based logging.

Fix

Switch to MIXED binlog format

Switch to MIXED binlog format
SET GLOBAL binlog_format = 'MIXED';

Why this works

MIXED format automatically selects row or statement logging as appropriate for each statement.

Sources
Official documentation ↗

MySQL 8.0 — 1611 ER_BINLOG_ROW_MODE_AND_STMT_ENGINE

Content generated with AI assistance and reviewed for accuracy. Found an error? hello@errcodes.dev

← All MySQL errors