apache/seatunnel · error · JdbcConnectorException
CONFIG_VALIDATION_FAILED
CONFIG_VALIDATION_FAILED
Error message
Unsupported JDBC table_options for dialect '%s': %s. Supported keys: %s
What it means
MysqlFamilyTableOptions.validate checks user-supplied JDBC table_options against a whitelist of keys supported for the MySQL dialect family. Any unknown key causes a JdbcConnectorException with CONFIG_VALIDATION_FAILED, naming the offending keys and the supported set.
Solutions
- Remove or correct the unsupported key listed in the message; use only keys from the 'Supported keys' list.
- Check the SeaTunnel docs for the MySQL connector's supported table_options.
- Upgrade the SeaTunnel connector if the option you need was added in a newer release.
- Move dialect-specific options to the correct config section (URL params or dialect block) instead of table_options.
Example fix
// before
table_options {
auto_increment = 100
engine = "InnoDB"
charsett = "utf8mb4" // typo
}
// after
table_options {
auto_increment = 100
engine = "InnoDB"
charset = "utf8mb4"
} Defensive patterns
Strategy: validation
Validate before calling
Set<String> allowed = Set.of("engine", "charset", "auto_increment", ...); // from docs
for (String k : tableOptions.keySet()) {
if (!allowed.contains(k)) throw new IllegalArgumentException("Unsupported table_options key: " + k);
} Try / catch
catch (JdbcConnectorException e) { if (e.getCode() == SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED) { log.error("Fix table_options: {}", e.getMessage()); } } Prevention
- Only use table_options keys listed in the SeaTunnel MySQL connector docs
- Avoid copy-pasting configs between dialect families
- Keep connector version in sync with config templates you use
When it happens
Trigger: Passing a table_options entry whose key is not in SUPPORTED_KEYS when configuring a MySQL-family JDBC source/sink, e.g. a typo or an option belonging to another dialect.
Common situations: Copy-pasting connector config from a non-MySQL example; typos like 'comment' vs 'remarks'; using an option added in a newer SeaTunnel version while running an older connector jar.
Understand the failure class
Background: Config validation failed: what "invalid value for {key}" and settings-rejection errors mean across 19 open-source libraries — this error's family across 19 libraries.
Related errors
- OptionValidationException(e.getMessage())
- COMMON-17
- COMMON-19
- CONFIG_VALIDATION_FAILED
- CONFIG_VALIDATION_FAILED
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/a61de34face0aa31.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/mysql/MysqlFamilyTableOptions.java:46
/** Shared {@code table_options} validation for MySQL-compatible JDBC dialects. */
public final class MysqlFamilyTableOptions {
public static final Set<String> SUPPORTED_KEYS =
Collections.unmodifiableSet(
new LinkedHashSet<>(Arrays.asList("engine", "charset", "collate")));
private MysqlFamilyTableOptions() {}
public static void validate(String dialectName, Map<String, String> tableOptions) {
if (tableOptions == null || tableOptions.isEmpty()) {
return;
}
Set<String> unsupportedOptions = new LinkedHashSet<>(tableOptions.keySet());
unsupportedOptions.removeAll(SUPPORTED_KEYS);
if (!unsupportedOptions.isEmpty()) {
throw new JdbcConnectorException(
SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,
String.format(
"Unsupported JDBC table_options for dialect '%s': %s. Supported keys: %s",
dialectName,
String.join(", ", unsupportedOptions),
String.join(", ", SUPPORTED_KEYS)));
}
}
}
View on GitHub (pinned to cf67b549a7)