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
- 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.
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
- 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
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
- Failed to parse job config file: <path>
- Failed to parse job config:
- Unsupported SQL syntax: %s
- The SQL config must contain at least one source table
- The SQL config must contain `INSERT INTO ... SELECT ...` syn
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/9774e06ab1b6cc98.
Report an issue: GitHub.