{"record":{"id":"a61de34face0aa31","repo":"apache/seatunnel","slug":"config-validation-failed-a61de3","errorCode":"CONFIG_VALIDATION_FAILED","errorMessage":"Unsupported JDBC table_options for dialect '%s': %s. Supported keys: %s","messagePattern":"Unsupported JDBC table_options for dialect '(.+?)': (.+?)\\. Supported keys: (.+?)","errorType":"validation","errorClass":"JdbcConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/mysql/MysqlFamilyTableOptions.java","lineNumber":46,"sourceCode":"\n/** Shared {@code table_options} validation for MySQL-compatible JDBC dialects. */\npublic final class MysqlFamilyTableOptions {\n\n    public static final Set<String> SUPPORTED_KEYS =\n            Collections.unmodifiableSet(\n                    new LinkedHashSet<>(Arrays.asList(\"engine\", \"charset\", \"collate\")));\n\n    private MysqlFamilyTableOptions() {}\n\n    public static void validate(String dialectName, Map<String, String> tableOptions) {\n        if (tableOptions == null || tableOptions.isEmpty()) {\n            return;\n        }\n\n        Set<String> unsupportedOptions = new LinkedHashSet<>(tableOptions.keySet());\n        unsupportedOptions.removeAll(SUPPORTED_KEYS);\n        if (!unsupportedOptions.isEmpty()) {\n            throw new JdbcConnectorException(\n                    SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,\n                    String.format(\n                            \"Unsupported JDBC table_options for dialect '%s': %s. Supported keys: %s\",\n                            dialectName,\n                            String.join(\", \", unsupportedOptions),\n                            String.join(\", \", SUPPORTED_KEYS)));\n        }\n    }\n}\n","sourceCodeStart":28,"sourceCodeEnd":56,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/mysql/MysqlFamilyTableOptions.java#L28-L56","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\ntable_options {\n  auto_increment = 100\n  engine = \"InnoDB\"\n  charsett = \"utf8mb4\"   // typo\n}\n// after\ntable_options {\n  auto_increment = 100\n  engine = \"InnoDB\"\n  charset = \"utf8mb4\"\n}","handlingStrategy":"validation","validationCode":"Set<String> allowed = Set.of(\"engine\", \"charset\", \"auto_increment\", ...); // from docs\nfor (String k : tableOptions.keySet()) {\n    if (!allowed.contains(k)) throw new IllegalArgumentException(\"Unsupported table_options key: \" + k);\n}","typeGuard":null,"tryCatchPattern":"catch (JdbcConnectorException e) { if (e.getCode() == SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED) { log.error(\"Fix table_options: {}\", e.getMessage()); } }","preventionTips":["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"],"tags":["jdbc","mysql","config-validation","options"],"backgroundTag":"unsupported-config-value","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}