apache/seatunnel · error · ParserException

The connector of option is none

Error message

The connector of option is none

What it means

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.

Source

Thrown at seatunnel-config/seatunnel-config-sql/src/main/java/org/apache/seatunnel/config/sql/SqlConfigBuilder.java:280

        String[] optionItems = options.split(OPTION_DELIMITER);
        Map<String, String> optionsMap = new LinkedHashMap<>();
        for (String optionItem : optionItems) {
            int idx = optionItem.indexOf(OPTION_KV_DELIMITER);
            if (idx < 0) {
                continue;
            }
            String key = clean(optionItem.substring(0, idx).trim());
            String value = clean(optionItem.substring(idx + 1).trim());
            optionsMap.put(key, value);
        }
        return optionsMap;
    }

    private static SourceConfig parseSourceSql(
            CreateTable createTable, Map<String, String> options) {
        String connector = options.get(OPTION_TABLE_CONNECTOR_KEY);
        if (StringUtils.isEmpty(connector)) {
            throw new ParserException("The connector of option is none");
        }
        SourceConfig sourceConfig = new SourceConfig();
        sourceConfig.setConnector(connector);

        String pluginOutputIdentifier = createTable.getTable().getName();
        sourceConfig.setPluginOutputIdentifier(pluginOutputIdentifier);
        convertOptions(options, sourceConfig.getOptions());
        sourceConfig
                .getOptions()
                .add(Option.of(OPTION_PLUGIN_OUTPUT_KEY, "\"" + pluginOutputIdentifier + "\""));
        return sourceConfig;
    }

    private static SinkConfig parseSinkSql(Map<String, String> options) {
        String connector = options.get(OPTION_TABLE_CONNECTOR_KEY);
        if (StringUtils.isEmpty(connector)) {
            throw new ParserException("The connector of option is none");
        }

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Add the connector option: WITH ('connector' = 'your-plugin', 'type' = 'source').
  2. Check the exact option key spelling: 'connector'.
  3. Verify the substituted value is non-empty if the config is templated.
  4. Consult the connector docs for the plugin name and its required options.

Example fix

// before
CREATE TABLE src WITH ('type' = 'source') (id INT); -- no connector
// after
CREATE TABLE src WITH ('connector' = 'fake', 'type' = 'source') (id INT);
Defensive patterns

Strategy: validation

Validate before calling

Pattern p = Pattern.compile("CREATE TABLE\\s+\\w+\\s*WITH\\s*\\(([^)]*)\\)");
Matcher m = p.matcher(createTableSql);
if (!m.find() || !m.group(1).matches(".*'connector'\\s*=\\s*'.+'")) throw new IllegalStateException("connector option missing");

Try / catch

try { Config c = SqlConfigBuilder.of(sqlFile); } catch (ParserException e) { if (e.getMessage().contains("connector")) { /* add 'connector' option to the source table */ } }

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Understand the failure class

Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.

Related errors


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