flowable/flowable-engine · critical · FlowableException
no flowable tables in db. set <property name="databaseSchema
Error message
no flowable tables in db. set <property name="databaseSchemaUpdate" to value="true" or value="create-drop" (use create-drop for testing only!) in bean processEngineConfig
What it means
Wrapped error thrown when the IDM schema version check fails because the underlying JDBC interaction reports missing Flowable tables. It adds remediation guidance: enable automatic schema creation via databaseSchemaUpdate. The original exception is attached as the cause.
Source
Thrown at modules/flowable-idm-engine/src/main/java/org/flowable/idm/engine/impl/db/IdmDbSchemaManager.java:89
public void schemaCheckVersion() {
try {
String dbVersion = getSchemaVersion();
if (!IdmEngine.VERSION.equals(dbVersion)) {
throw new FlowableWrongDbException(IdmEngine.VERSION, dbVersion);
}
String errorMessage = null;
if (!isTablePresent(IDM_PROPERTY_TABLE)) {
errorMessage = addMissingComponent(errorMessage, "engine");
}
if (errorMessage != null) {
throw new FlowableException("Flowable IDM database problem: " + errorMessage);
}
} catch (Exception e) {
if (isMissingTablesException(e)) {
throw new FlowableException(
"no flowable tables in db. set <property name=\"databaseSchemaUpdate\" to value=\"true\" or value=\"create-drop\" (use create-drop for testing only!) in bean processEngineConfiguration in flowable.cfg.xml for automatic schema creation",
e);
} else {
if (e instanceof RuntimeException) {
throw (RuntimeException) e;
} else {
throw new FlowableException("couldn't get db schema version", e);
}
}
}
logger.debug("flowable idm db schema check successful");
}
protected String addMissingComponent(String missingComponents, String component) {
if (missingComponents == null) {
return "Tables missing for component(s) " + component;
}View on GitHub (pinned to d6d39ce1c6)
Solutions
- Set databaseSchemaUpdate to true (or create-drop for test environments) so Flowable creates the tables.
- Run the IDM SQL create scripts for your DB vendor manually.
- Confirm the JDBC URL points to the correct database/catalog containing the Flowable tables.
- Inspect the cause exception to rule out permissions or connectivity issues rather than truly missing tables.
Example fix
// before <property name="databaseSchemaUpdate" value="false" /> // after <property name="databaseSchemaUpdate" value="true" />
Defensive patterns
Strategy: validation
Validate before calling
try (Connection c = dataSource.getConnection(); ResultSet rs = c.getMetaData().getTables(null, null, "ACT_ID_PROPERTY", null)) {
if (!rs.next()) throw new IllegalStateException("Flowable IDM tables missing — enable databaseSchemaUpdate or run create scripts");
} Try / catch
try {
idmEngine = config.buildEngine();
} catch (FlowableException e) {
if (e.getMessage().startsWith("no flowable tables in db")) {
// apply schema scripts then retry bootstrap
}
throw e;
} Prevention
- Run Flowable SQL create scripts as part of environment provisioning.
- Align Flowable version with the DB schema version.
- Verify the JDBC URL points to the right database before startup.
- Add a startup health check that verifies ACT_ID_* tables.
When it happens
Trigger: Engine bootstrap (schemaCheckVersion) where a SQL exception indicates the ACT_ID_* tables do not exist — typically any query against an empty database.
Common situations: First run against a brand-new empty database with databaseSchemaUpdate=false; pointing the engine at the wrong database/schema; DB migrations never applied.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- Flowable database problem: ${errorMessage}
- No flowable tables in DB. Set property "databaseSchemaUpdate
- couldn't get ${context} db schema version
- version mismatch: library version is '${engineVersion}', db
- Failed to get change log version from ${changeLogTableName}
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/aa4cd79851ca4d02.
Report an issue: GitHub.