apache/seatunnel · warning
\t skipping database '{}' due to error reading tables: {}
Error message
\t skipping database '{}' due to error reading tables: {} What it means
Same skip-database warning as the modern Debezium path but in the legacy SnapshotReader: while enumerating tables per database during snapshot, a SQLException for a database logs this warning and that database is skipped. Snapshot continues without those tables.
Source
Thrown at seatunnel-connectors-v2/connector-cdc/connector-cdc-mysql/src/main/java/io/debezium/connector/mysql/legacy/SnapshotReader.java:394
"\t '{}' is not added among known tables", id);
}
if (filters.tableFilter()
.and(isAllowedForSnapshot)
.test(id)) {
capturedTableIds.add(id);
logger.info(
"\t including '{}' for further processing", id);
} else {
logger.debug(
"\t '{}' is filtered out of capturing", id);
}
}
});
readableDatabaseNames.add(dbName);
} catch (SQLException e) {
// We were unable to execute the query or process the results, so skip this
// ...
logger.warn(
"\t skipping database '{}' due to error reading tables: {}",
dbName,
e.getMessage());
}
}
/*
* To achieve an ordered snapshot, we would first get a list of Regex tables.whitelist regex patterns
* + and then sort the tableIds list based on the above list
* +
*/
List<Pattern> tableIncludeListPattern =
Strings.listOfRegex(
configuration.getFallbackStringProperty(
MySqlConnectorConfig.TABLE_INCLUDE_LIST,
MySqlConnectorConfig.TABLE_WHITELIST),
Pattern.CASE_INSENSITIVE);
List<TableId> tableIdsSorted = new ArrayList<>();
tableIncludeListPattern.forEach(View on GitHub (pinned to cf67b549a7)
Solutions
- Grant the CDC user adequate privileges on all databases expected to be captured.
- Confirm the database exists and matches your table-name include/exclude configuration.
- Check MySQL error log for the underlying SQLException message printed after the colon.
- Upgrade to the current Debezium-based MySQL CDC path if the legacy reader behavior is undesirable.
- Rerun the snapshot after fixing permissions to capture previously skipped tables.
Defensive patterns
Strategy: validation
Validate before calling
SHOW GRANTS FOR CURRENT_USER; -- ensure SELECT on all schemas in table-name config
Prevention
- Pre-grant privileges on all target schemas before legacy snapshot runs
- Log and review skipped databases post-run to catch silent exclusions
- Upgrade away from the legacy SnapshotReader path where possible
- Validate database names in config against information_schema
When it happens
Trigger: Legacy snapshot execution reads tables of each database via JDBC; the query fails for one database (privileges, dropped schema, connection error) and the reader logs and continues.
Common situations: Older SeaTunnel/Debezium connector versions using the legacy snapshot path; CDC account with limited schema grants; schema dropped concurrently with snapshot start.
Understand the failure class
Background: Permission denied / not authorized / 403 Forbidden: access-control rejections when the caller lacks the required role, grant, or ownership — this error's family across 18 libraries.
Related errors
- \t skipping database '{}' due to error reading tables: {}
- Unable to set innodb_lock_wait_timeout
- Snapshot is using user '{}' but it likely doesn't have prope
- Cannot read the binlog filename and position via '<showMaste
- Interrupted while emitting initial DROP TABLE events
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/b94b623adbeff853.
Report an issue: GitHub.