apache/seatunnel · info

Column {} does not exist in table {}. Skipping drop column o

Error message

Column {} does not exist in table {}. Skipping drop column operation. event: {}

What it means

When handling an AlterTableDropColumnEvent, JdbcDialect verifies the column exists before generating DROP DDL. If the column is absent the operation is skipped with this warning, making drop-column evolution idempotent and tolerant of concurrent/replayed events.

Source

Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/JdbcDialect.java:553

                }
                applySchemaChange(connection, tablePath, changeColumnEvent);
            } else if (event instanceof AlterTableModifyColumnEvent) {
                applySchemaChange(connection, tablePath, (AlterTableModifyColumnEvent) event);
            } else if (event instanceof AlterTableAddColumnEvent) {
                AlterTableAddColumnEvent addColumnEvent = (AlterTableAddColumnEvent) event;
                if (columnExists(connection, tablePath, addColumnEvent.getColumn().getName())) {
                    log.warn(
                            "Column {} already exists in table {}. Skipping add column operation. event: {}",
                            addColumnEvent.getColumn().getName(),
                            tablePath.getFullName(),
                            event);
                    return;
                }
                applySchemaChange(connection, tablePath, addColumnEvent);
            } else if (event instanceof AlterTableDropColumnEvent) {
                AlterTableDropColumnEvent dropColumnEvent = (AlterTableDropColumnEvent) event;
                if (!columnExists(connection, tablePath, dropColumnEvent.getColumn())) {
                    log.warn(
                            "Column {} does not exist in table {}. Skipping drop column operation. event: {}",
                            dropColumnEvent.getColumn(),
                            tablePath.getFullName(),
                            event);
                    return;
                }
                applySchemaChange(connection, tablePath, dropColumnEvent);
            } else if (event instanceof AlterTableCommentEvent
                    || event instanceof AlterColumnCommentEvent) {
                // Comment-only changes are not supported by JDBC sink, safely ignore
                log.info(
                        "Ignoring comment change event for table {} - JDBC sink does not support comment sync: {}",
                        tablePath.getFullName(),
                        event.getClass().getSimpleName());
            } else {
                throw new UnsupportedOperationException("Unsupported schemaChangeEvent: " + event);
            }
        }

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Benign skip if the column was intentionally removed earlier
  2. Verify column name/case matches the target database's identifier casing rules
  3. If the column should exist, re-create it before replaying the drop event
  4. Check for concurrent jobs altering the same table
Defensive patterns

Strategy: validation

Validate before calling

// pre-check before emitting drop-column DDL
if (!columnExists(conn, tablePath, columnName)) {
    log.info("column absent; skip DROP COLUMN");
}

Prevention

When it happens

Trigger: applySchemaChange receives an AlterTableDropColumnEvent for a column that does not exist in the target table (already dropped, never existed, or name mismatch).

Common situations: Event replay after restart; the column was already dropped manually or by another job; column name case/whitespace mismatch between CDC event and target DB.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


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