{"record":{"id":"9774e06ab1b6cc98","repo":"apache/seatunnel","slug":"the-connector-of-option-is-none","errorCode":null,"errorMessage":"The connector of option is none","messagePattern":"The connector of option is none","errorType":"exception","errorClass":"ParserException","httpStatus":null,"severity":"error","filePath":"seatunnel-config/seatunnel-config-sql/src/main/java/org/apache/seatunnel/config/sql/SqlConfigBuilder.java","lineNumber":280,"sourceCode":"        String[] optionItems = options.split(OPTION_DELIMITER);\n        Map<String, String> optionsMap = new LinkedHashMap<>();\n        for (String optionItem : optionItems) {\n            int idx = optionItem.indexOf(OPTION_KV_DELIMITER);\n            if (idx < 0) {\n                continue;\n            }\n            String key = clean(optionItem.substring(0, idx).trim());\n            String value = clean(optionItem.substring(idx + 1).trim());\n            optionsMap.put(key, value);\n        }\n        return optionsMap;\n    }\n\n    private static SourceConfig parseSourceSql(\n            CreateTable createTable, Map<String, String> options) {\n        String connector = options.get(OPTION_TABLE_CONNECTOR_KEY);\n        if (StringUtils.isEmpty(connector)) {\n            throw new ParserException(\"The connector of option is none\");\n        }\n        SourceConfig sourceConfig = new SourceConfig();\n        sourceConfig.setConnector(connector);\n\n        String pluginOutputIdentifier = createTable.getTable().getName();\n        sourceConfig.setPluginOutputIdentifier(pluginOutputIdentifier);\n        convertOptions(options, sourceConfig.getOptions());\n        sourceConfig\n                .getOptions()\n                .add(Option.of(OPTION_PLUGIN_OUTPUT_KEY, \"\\\"\" + pluginOutputIdentifier + \"\\\"\"));\n        return sourceConfig;\n    }\n\n    private static SinkConfig parseSinkSql(Map<String, String> options) {\n        String connector = options.get(OPTION_TABLE_CONNECTOR_KEY);\n        if (StringUtils.isEmpty(connector)) {\n            throw new ParserException(\"The connector of option is none\");\n        }","sourceCodeStart":262,"sourceCodeEnd":298,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-config/seatunnel-config-sql/src/main/java/org/apache/seatunnel/config/sql/SqlConfigBuilder.java#L262-L298","documentation":"parseSourceSql requires the WITH options of a source CREATE TABLE to include a 'connector' option; if it's missing or empty, it throws ParserException 'The connector of option is none'. The connector value names the seatunnel plugin (e.g. 'fake', 'kafka', 'jdbc') that will actually read the data.","triggerScenarios":"A CREATE TABLE marked 'type'='source' (or defaulting to source) whose WITH clause lacks 'connector'='...', or where the option key is misspelled ('connecter', 'plugin') or the value is an empty string.","commonSituations":"New users copying plain SQL CREATE TABLE without seatunnel's WITH options, forgetting the connector when only 'type' is specified, or a blank connector value after templating/substitution.","solutions":["Add the connector option: WITH ('connector' = 'your-plugin', 'type' = 'source').","Check the exact option key spelling: 'connector'.","Verify the substituted value is non-empty if the config is templated.","Consult the connector docs for the plugin name and its required options."],"exampleFix":"// before\nCREATE TABLE src WITH ('type' = 'source') (id INT); -- no connector\n// after\nCREATE TABLE src WITH ('connector' = 'fake', 'type' = 'source') (id INT);","handlingStrategy":"validation","validationCode":"Pattern p = Pattern.compile(\"CREATE TABLE\\\\s+\\\\w+\\\\s*WITH\\\\s*\\\\(([^)]*)\\\\)\");\nMatcher m = p.matcher(createTableSql);\nif (!m.find() || !m.group(1).matches(\".*'connector'\\\\s*=\\\\s*'.+'\")) throw new IllegalStateException(\"connector option missing\");","typeGuard":null,"tryCatchPattern":"try { Config c = SqlConfigBuilder.of(sqlFile); } catch (ParserException e) { if (e.getMessage().contains(\"connector\")) { /* add 'connector' option to the source table */ } }","preventionTips":["Always include 'connector'='plugin-name' in WITH options","Never leave connector values empty in templates","Copy option skeletons from connector docs","Validate source tables declare both connector and type"],"tags":["sql-config","missing-option","connector","java"],"backgroundTag":"missing-required-config-field","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}