1601
MariaDBERRORNotableReplicationHIGH confidence

Stored function prevents switching binlog format (session-level)

Production Risk

Low — the SET is blocked safely.

What this means

Session-level variant: cannot change binlog_format inside an executing stored function or trigger.

Why it happens
  1. 1SET SESSION binlog_format was issued from within a stored function or trigger body.
How to reproduce
trigger — this will error
trigger — this will error
-- Inside a stored function body:
SET SESSION binlog_format = 'ROW';

expected output

ERROR 1601 (HY000): Cannot change the binlog direct flag inside a stored function or trigger

Fix

Change binlog_format before invoking the routine

Change binlog_format before invoking the routine
SET SESSION binlog_format = 'ROW';
CALL my_procedure();

Why this works

binlog_format must be set outside the scope of any executing stored routine.

Version notes

Sources
Official documentation ↗

MySQL 8.0 — 1601 ER_STORED_FUNCTION_PREVENTS_SWITCH_OUT_OF_RBR

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

← All MariaDB errors