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

  1. Remove all unsupported keys from table_options, keeping only listed supported keys
  2. Fix typos so keys exactly match the supported set (tablespace, fillfactor)
  3. Consult DmdbDialect.SUPPORTED_TABLE_OPTIONS for the authoritative key list
  4. 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

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


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/71ba383ba11e7558. Report an issue: GitHub.