apache/incubator-seata · error · IllegalArgumentException

unknown dbtype

Error message

unknown dbtype:{dbType}

What it means

Thrown by DBType.valueof(String) when the configured database type string does not equal (case-insensitively) any DBType enum constant (mysql, oracle, postgresql, etc.). It is used when resolving store.db.dbType on the TC server and by datasource parsers.

Solutions

  1. Set store.db.dbType to the exact enum name, e.g. mysql, oracle, postgresql, db2, sqlserver, ... (case-insensitive but exact spelling).
  2. If pointing at PostgreSQL, use 'postgresql', not 'postgres'.
  3. Re-trim the config value and restart the server.

Example fix

# before
store.db.dbType = postgres
# after
store.db.dbType = postgresql
Defensive patterns

Strategy: validation

Validate before calling

static boolean knownDb(String s) {
    return Arrays.stream(DBType.values()).anyMatch(d -> d.name().equalsIgnoreCase(s == null ? "" : s.trim()));
}

Type guard

static Optional<DBType> parseDb(String s) {
    String n = s == null ? "" : s.trim();
    return Arrays.stream(DBType.values()).filter(d -> d.name().equalsIgnoreCase(n)).findFirst();
}

Prevention

When it happens

Trigger: Setting store.db.dbType (file.conf / application.yml on the server) to an unrecognized value such as 'postgres' (must be postgresql), 'maria', 'msql', or a value with stray whitespace/quotes; also reached by API code mapping a JDBC URL prefix to a DBType.

Common situations: Typo in server store configuration; using 'postgres' instead of 'postgresql'; copying a config written for a community fork; trailing whitespace from YAML copy-paste.

Related errors


AI-assisted analysis of apache/incubator-seata@e01f97c6db (2026-08-14). Data as JSON: /api/errors/098ccaf759c59fd2. Report an issue: GitHub.

Appendix: source

Thrown at core/src/main/java/org/apache/seata/core/constants/DBType.java:214

    /**
     * oscar db type.
     */
    OSCAR;

    /**
     * Valueof db type.
     *
     * @param dbType the db type
     * @return the db type
     */
    public static DBType valueof(String dbType) {
        for (DBType dt : values()) {
            if (StringUtils.equalsIgnoreCase(dt.name(), dbType)) {
                return dt;
            }
        }
        throw new IllegalArgumentException("unknown dbtype:" + dbType);
    }
}

View on GitHub (pinned to e01f97c6db)