apache/seatunnel · warning
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
SchemaUtils.applySchemaChange logs this warning when an AlterTableDropColumnEvent arrives for a column that does not exist in the StarRocks table. columnExists() is checked first and, when false, the ALTER TABLE DROP COLUMN statement is skipped and the method returns instead of throwing SQLException. This makes drop-column events idempotent.
Source
Thrown at seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/util/SchemaUtils.java:103
}
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 StarRocks sink, safely ignore
log.info(
"Ignoring comment change event for table {} - StarRocks sink does not support comment sync: {}",
tablePath.getFullName(),
event.getEventType());
} else {
throw new SeaTunnelException(
"Unsupported schemaChangeEvent : " + event.getEventType());
}View on GitHub (pinned to cf67b549a7)
Solutions
- No action required if the column was intentionally removed — the skip is the correct behavior.
- Confirm the column name in the event matches the StarRocks column exactly (case, quoting); fix the source schema mapping if names diverge.
- If the drop must take effect, verify you are connected to the correct database/table via TablePath and apply the DROP COLUMN manually.
Defensive patterns
Strategy: validation
Validate before calling
// before applying drop-column event
try (Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("DESC " + tablePath.getFullName())) {
boolean found = false;
while (rs.next()) {
if (rs.getString("Field").equalsIgnoreCase(dropColumnEvent.getColumn())) { found = true; break; }
}
if (!found) { log.info("column absent, drop is a no-op"); }
} Prevention
- Ensure column-name case/quoting matches between CDC events and StarRocks
- Check TablePath points to the intended database/table
- Verify manually applied DDL doesn't conflict with pipeline-managed schema changes
When it happens
Trigger: applySchemaChange(connection, tablePath, AlterTableDropColumnEvent) is called and columnExists(connection, tablePath, dropColumnEvent.getColumn()) returns false — the column is absent from the StarRocks table (or the database/table does not resolve).
Common situations: Replayed drop events after job restart; the column was already dropped manually or by another tool; a case-sensitivity/name mismatch between the CDC event column name and the actual StarRocks column name causes the existence check to miss it.
Related errors
- Column {} already exists in table {}. Skipping change column
- Column {} already exists in table {}. Skipping add column op
- Failed connecting to %s via JDBC.
- Unsupported schemaChangeEvent : " + event.getEventType()
- checkpointId is already set
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/038a149bcee080b5.
Report an issue: GitHub.