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
Thrown by DmdbDialect.validateTableOptions when the user supplies table_options containing keys that the DM (Dameng) dialect does not support. The message lists the unsupported keys and the set of supported keys (e.g. tablespace, fillfactor).
Source
Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/dm/DmdbDialect.java:418
+ column
+ "'";
try (Statement statement = connection.createStatement()) {
ResultSet rs = statement.executeQuery(selectColumnSQL);
rs.next();
return rs.getString("NULLABLE").equals("Y");
}
}
@Override
public void validateTableOptions(Map<String, String> tableOptions) {
if (tableOptions == null || tableOptions.isEmpty()) {
return;
}
Set<String> unsupportedOptions = new LinkedHashSet<>(tableOptions.keySet());
unsupportedOptions.removeAll(SUPPORTED_TABLE_OPTIONS);
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_TABLE_OPTIONS)));
}
for (Map.Entry<String, String> entry : tableOptions.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
if (StringUtils.isBlank(value)) {
throw new JdbcConnectorException(
SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,
String.format(
"Invalid JDBC table_options for dialect '%s': key '%s' must not be blank",
dialectName(), key));
}View on GitHub (pinned to cf67b549a7)
Solutions
- Remove all unsupported keys from table_options, keeping only listed supported keys
- Fix typos so keys exactly match the supported set (tablespace, fillfactor)
- Consult DmdbDialect.SUPPORTED_TABLE_OPTIONS for the authoritative key list
- Move dialect-specific storage settings into native DDL pre-created tables if needed
Example fix
// before
sink {
Jdbc {
table_options {
tablespace = "TS1"
engine = "InnoDB" // unsupported
}
}
}
// after
sink {
Jdbc {
table_options {
tablespace = "TS1"
}
}
} Defensive patterns
Strategy: validation
Validate before calling
Set<String> supported = Set.of("tablespace", "fillfactor"); // mirror DmdbDialect.SUPPORTED_TABLE_OPTIONS
Map<String,String> tableOptions = ...;
Set<String> unsupported = new LinkedHashSet<>(tableOptions.keySet());
unsupported.removeAll(supported);
if (!unsupported.isEmpty()) throw new IllegalArgumentException("Unsupported table_options: " + unsupported); Try / catch
try {
sinkOptions.setTableOptions(userOptions);
} catch (JdbcConnectorException e) {
if (e.getCode() == SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED
&& e.getMessage().contains("Unsupported JDBC table_options")) {
// strip/fix the listed keys listed in e.getMessage() and retry config build
}
} Prevention
- Only use keys listed in the error message's 'Supported keys' section
- Do not copy table_options verbatim from MySQL/PostgreSQL connector configs
- Check DmdbDialect.SUPPORTED_TABLE_OPTIONS in the source for the authoritative list
- Watch for typos and trailing whitespace in option keys
When it happens
Trigger: Configuring a JDBC sink with plugin_name DM/dmdb and a table_options map containing any key outside SUPPORTED_TABLE_OPTIONS, such as engine, charset, or typo'd keys like 'tablespace ' or 'fillefactor'.
Common situations: Copying table_options from MySQL/PostgreSQL connector configs; typos in supported keys; upgrading SeaTunnel and relying on options a previous custom build accepted.
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
- CONFIG_VALIDATION_FAILED
- CONFIG_VALIDATION_FAILED
- SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED
- SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED
- DATABASE_NOT_EXISTED
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/71ba383ba11e7558.
Report an issue: GitHub.