{"record":{"id":"f81068d0891df1c6","repo":"apache/seatunnel","slug":"column-does-not-exist-in-table-skipping-dro-f81068","errorCode":null,"errorMessage":"Column {} does not exist in table {}. Skipping drop column operation. event: {}","messagePattern":"Column (.+?) does not exist in table (.+?)\\. Skipping drop column operation\\. event: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/JdbcDialect.java","lineNumber":553,"sourceCode":"                }\n                applySchemaChange(connection, tablePath, changeColumnEvent);\n            } else if (event instanceof AlterTableModifyColumnEvent) {\n                applySchemaChange(connection, tablePath, (AlterTableModifyColumnEvent) event);\n            } else if (event instanceof AlterTableAddColumnEvent) {\n                AlterTableAddColumnEvent addColumnEvent = (AlterTableAddColumnEvent) event;\n                if (columnExists(connection, tablePath, addColumnEvent.getColumn().getName())) {\n                    log.warn(\n                            \"Column {} already exists in table {}. Skipping add column operation. event: {}\",\n                            addColumnEvent.getColumn().getName(),\n                            tablePath.getFullName(),\n                            event);\n                    return;\n                }\n                applySchemaChange(connection, tablePath, addColumnEvent);\n            } else if (event instanceof AlterTableDropColumnEvent) {\n                AlterTableDropColumnEvent dropColumnEvent = (AlterTableDropColumnEvent) event;\n                if (!columnExists(connection, tablePath, dropColumnEvent.getColumn())) {\n                    log.warn(\n                            \"Column {} does not exist in table {}. Skipping drop column operation. event: {}\",\n                            dropColumnEvent.getColumn(),\n                            tablePath.getFullName(),\n                            event);\n                    return;\n                }\n                applySchemaChange(connection, tablePath, dropColumnEvent);\n            } else if (event instanceof AlterTableCommentEvent\n                    || event instanceof AlterColumnCommentEvent) {\n                // Comment-only changes are not supported by JDBC sink, safely ignore\n                log.info(\n                        \"Ignoring comment change event for table {} - JDBC sink does not support comment sync: {}\",\n                        tablePath.getFullName(),\n                        event.getClass().getSimpleName());\n            } else {\n                throw new UnsupportedOperationException(\"Unsupported schemaChangeEvent: \" + event);\n            }\n        }","sourceCodeStart":535,"sourceCodeEnd":571,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/JdbcDialect.java#L535-L571","documentation":"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.","triggerScenarios":"applySchemaChange receives an AlterTableDropColumnEvent for a column that does not exist in the target table (already dropped, never existed, or name mismatch).","commonSituations":"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.","solutions":["Benign skip if the column was intentionally removed earlier","Verify column name/case matches the target database's identifier casing rules","If the column should exist, re-create it before replaying the drop event","Check for concurrent jobs altering the same table"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// pre-check before emitting drop-column DDL\nif (!columnExists(conn, tablePath, columnName)) {\n    log.info(\"column absent; skip DROP COLUMN\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Make drop handlers tolerant of already-dropped columns","Normalize column-name casing against the target DB's rules","Coordinate manual DDL changes with automated schema evolution"],"tags":["schema-evolution","jdbc","idempotency","ddl"],"backgroundTag":"resource-not-found","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}