apache/seatunnel · error · IllegalArgumentException
Please configure `database`, not allow null database in conf
Error message
Please configure `database`, not allow null database in config.
What it means
DorisTableConfig.of requires every table configuration to have a non-blank `database` value; when getDatabase() is null/empty/whitespace it throws IllegalArgumentException. The Doris sink needs a fully qualified `database`.`table` target.
Source
Thrown at seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/config/DorisTableConfig.java:123
tableList = Collections.singletonList(tableProperty);
}
if (tableList.size() > 1) {
List<String> tableIds =
tableList.stream()
.map(DorisTableConfig::getTableIdentifier)
.collect(Collectors.toList());
Set<String> tableIdSet = new HashSet<>(tableIds);
if (tableIdSet.size() < tableList.size() - 1) {
throw new IllegalArgumentException(
"Please configure unique `database`.`table`, not allow null/duplicate: "
+ tableIds);
}
}
for (DorisTableConfig dorisTableConfig : tableList) {
if (StringUtils.isBlank(dorisTableConfig.getDatabase())) {
throw new IllegalArgumentException(
"Please configure `database`, not allow null database in config.");
}
if (StringUtils.isBlank(dorisTableConfig.getTable())) {
throw new IllegalArgumentException(
"Please configure `table`, not allow null table in config.");
}
if (dorisTableConfig.getBatchSize() <= 0) {
dorisTableConfig.setBatchSize(DORIS_BATCH_SIZE.defaultValue());
}
if (dorisTableConfig.getExecMemLimit() <= 0) {
dorisTableConfig.setExecMemLimit(DORIS_EXEC_MEM_LIMIT.defaultValue());
}
if (dorisTableConfig.getTabletSize() <= 0) {
dorisTableConfig.setTabletSize(DORIS_TABLET_SIZE.defaultValue());
}
}
return tableList;
}View on GitHub (pinned to cf67b549a7)
Solutions
- Add a non-empty `database` field to each entry in the table list
- If a single database applies to many tables, still ensure each entry (or the shared config the builder reads) carries the database name
- Check config key spelling/casing (`database`) in your HOCON/YAML
Example fix
// before
table-list = [{table = "orders"}]
// after
table-list = [{database = "sales", table = "orders"}] Defensive patterns
Strategy: validation
Validate before calling
if (StringUtils.isBlank(tableConfig.getString("database"))) {
throw new IllegalArgumentException("Each table-list entry requires a non-blank 'database'");
} Try / catch
try {
DorisTableConfig.of(dorisConfig, options);
} catch (IllegalArgumentException e) {
if (e.getMessage().contains("Please configure `database`")) {
LOG.error("Add missing 'database' field to every table-list entry");
}
throw e;
} Prevention
- Always include both database and table in each table-list entry
- Check key spelling and nesting in HOCON/YAML configs
- Run config validation in a pre-submit lint step
When it happens
Trigger: Calling DorisTableConfig.of(...) with a table entry that omits `database` or sets it to "" or whitespace, e.g. only {table = "t"}.
Common situations: Whole-database sync configs where the user assumes database is inherited from another option but the table entry itself lacks it; typos like `databases` or nested key misplacement in the config file.
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
- Please configure `table`, not allow null table in config.
- CONFIG_VALIDATION_FAILED
- Please configure unique `database`.`table`, not allow null/d
- CONFIG_VALIDATION_FAILED
- port must be positive
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/faf537fcb531d8bd.
Report an issue: GitHub.