apache/seatunnel · warning

Received DML 'sql' for processing, binlog probably contains…

Error message

Received DML 'sql' for processing, binlog probably contains events generated with statement or mixed based replication format

What it means

During streaming, a QUERY event containing DML (INSERT/UPDATE/DELETE) was received instead of row-based events. This happens when the binlog was produced with statement-based or mixed binlog format; Debezium's MySQL connector only supports row-based (ROW) replication, so the DML statement is logged and skipped (no data change events are emitted for it).

Solutions

  1. Set binlog_format=ROW on the source MySQL and restart it, then re-snapshot so the binlog contains row events from a clean position
  2. Verify with: SHOW VARIABLES LIKE 'binlog_format'; it must return ROW
  3. If binlog_format cannot be changed globally, set it per-session for writing applications or route CDC to a properly configured replica
  4. After changing the format, reset the connector offset/snapshot — events between the old and new positions cannot be recovered

Example fix

// before
SET GLOBAL binlog_format = 'MIXED';
// after
SET GLOBAL binlog_format = 'ROW';
-- then restart MySQL and take a fresh snapshot
Defensive patterns

Strategy: validation

Validate before calling

-- Run before configuring MySQL CDC:
SHOW VARIABLES LIKE 'binlog_format';
-- fail the deploy unless the value is exactly 'ROW'

Prevention

When it happens

Trigger: handleQueryEvent sees upperCasedStatementBegin matching 'INSERT ', 'UPDATE ', or 'DELETE ' — i.e. the source MySQL has binlog_format=STATEMENT or MIXED and row images are absent from the binlog.

Common situations: Replicating from a legacy replica or RDS instance still on binlog_format=STATEMENT/MIXED; an admin changed binlog_format without restarting; tables with statement-only updates (e.g. certain LOAD DATA or non-deterministic statements).

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/c439509b2d94ef12. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-connectors-v2/connector-cdc/connector-cdc-mysql/src/main/java/io/debezium/connector/mysql/MySqlStreamingChangeEventSource.java:650

        if (sql.equalsIgnoreCase("COMMIT")) {
            handleTransactionCompletion(partition, offsetContext, event);
            return;
        }

        String upperCasedStatementBegin = Strings.getBegin(sql, 7).toUpperCase();

        if (upperCasedStatementBegin.startsWith("XA ")) {
            // This is an XA transaction, and we currently ignore these and do nothing ...
            return;
        }
        if (connectorConfig.getDdlFilter().test(sql)) {
            LOGGER.debug("DDL '{}' was filtered out of processing", sql);
            return;
        }
        if (upperCasedStatementBegin.equals("INSERT ")
                || upperCasedStatementBegin.equals("UPDATE ")
                || upperCasedStatementBegin.equals("DELETE ")) {
            LOGGER.warn(
                    "Received DML '"
                            + sql
                            + "' for processing, binlog probably contains events generated with statement or mixed based replication format");
            return;
        }
        if (sql.equalsIgnoreCase("ROLLBACK")) {
            // We have hit a ROLLBACK which is not supported
            LOGGER.warn(
                    "Rollback statements cannot be handled without binlog buffering, the connector will fail. Please check '{}' to see how to enable buffering",
                    MySqlConnectorConfig.BUFFER_SIZE_FOR_BINLOG_READER.name());
        }

        final List<SchemaChangeEvent> schemaChangeEvents =
                taskContext
                        .getSchema()
                        .parseStreamingDdl(
                                partition,
                                sql,

View on GitHub (pinned to cf67b549a7)