3083
MySQLWARNINGNotableReplicationHIGH confidence
Unsafe mixed statement in binlog
Production Risk
Medium — replication may diverge.
What this means
A statement that mixes transactional and non-transactional table accesses is unsafe for statement-based binary logging.
Why it happens
- 1DML that writes to both InnoDB (transactional) and MyISAM (non-transactional) tables in the same statement.
How to reproduce
trigger — this will error
trigger — this will error
INSERT INTO myisam_table SELECT * FROM innodb_table;
expected output
Warning (Code 3083): Statement is unsafe because it accesses both transactional and non-transactional tables in a mixed statement.
Fix 1
Use ROW or MIXED binlog format
Use ROW or MIXED binlog format
SET GLOBAL binlog_format = 'ROW';
Why this works
Logs row-level changes, eliminating statement-level non-determinism.
Fix 2
Migrate non-transactional tables to InnoDB
Migrate non-transactional tables to InnoDB
ALTER TABLE myisam_table ENGINE=InnoDB;
Why this works
Eliminates the mixed-engine pattern entirely.
What not to do
✕
Sources
Official documentation ↗
MySQL 8.0 — 3083 ER_BINLOG_UNSAFE_MIXED_STATEMENT2
Content generated with AI assistance and reviewed for accuracy. Found an error? hello@errcodes.dev