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

  1. Remove or correct the unsupported key listed in the message; use only keys from the 'Supported keys' list.
  2. Check the SeaTunnel docs for the MySQL connector's supported table_options.
  3. Upgrade the SeaTunnel connector if the option you need was added in a newer release.
  4. 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

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


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)