{"record":{"id":"e745813956648ea4","repo":"flowable/flowable-engine","slug":"flowable-database-problem-errormessage","errorCode":null,"errorMessage":"Flowable database problem: ${errorMessage}","messagePattern":"Flowable database problem: (.+?)","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"critical","filePath":"modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/db/EngineSqlScriptBasedDbSchemaManager.java","lineNumber":61,"sourceCode":"\n    protected abstract String getDbVersionForChangelogVersion(String changeLogVersion);\n\n    @Override\n    public void schemaCheckVersion() {\n        try {\n            String dbVersion = getDbVersion();\n            String currentVersion = getEngineVersion();\n            if (!currentVersion.equals(dbVersion)) {\n                throw new FlowableWrongDbException(currentVersion, dbVersion);\n            }\n\n            String errorMessage = null;\n            if (!isEngineTablePresent()) {\n                errorMessage = addMissingComponent(errorMessage, context);\n            }\n\n            if (errorMessage != null) {\n                throw new FlowableException(\"Flowable database problem: \" + errorMessage);\n            }\n\n        } catch (Exception e) {\n            if (isMissingTablesException(e)) {\n                throw new FlowableException(\n                        \"No flowable tables in DB. Set property \\\"databaseSchemaUpdate\\\" \\\"true\\\" or value=\\\"create-drop\\\" (use create-drop for testing only!) for automatic schema creation\",\n                        e);\n            } else {\n                if (e instanceof RuntimeException) {\n                    throw (RuntimeException) e;\n                } else {\n                    throw new FlowableException(\"couldn't get \" + context + \" db schema version\", e);\n                }\n            }\n        }\n\n        logger.debug(\"flowable {} db schema check successful\", context);\n    }","sourceCodeStart":43,"sourceCodeEnd":79,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/db/EngineSqlScriptBasedDbSchemaManager.java#L43-L79","documentation":"After a successful version check, schemaCheckVersion verifies that the engine's tables are present; if not, it throws 'Flowable database problem: <missing component>'. The connected database lacks the required Flowable tables.","triggerScenarios":"Starting an engine against an empty or wrong database with databaseSchemaUpdate=false; tables were dropped; wrong schema/catalog selected so the table-existence check fails.","commonSituations":"Fresh environment where schema creation was never run; user connected to a different database/schema than intended; partial schema creation left the DB without engine tables.","solutions":["Set databaseSchemaUpdate=true (or \"create-drop\" in tests) to create missing tables automatically.","Run the DDL create scripts (org/flowable/db/create/*) manually for your database.","Verify the JDBC URL points to the intended database/schema where tables exist.","Check the DB user has SELECT on the metadata/tables and the tables aren't in another schema."],"exampleFix":"// before\n<property name=\"databaseSchemaUpdate\" value=\"false\" /> // empty DB\n// after\n<property name=\"databaseSchemaUpdate\" value=\"true\" />","handlingStrategy":"validation","validationCode":"try (Connection c = dataSource.getConnection(); ResultSet rs = c.getMetaData().getTables(null, null, \"ACT_GE_PROPERTY\", new String[]{\"TABLE\"})) {\n  if (!rs.next()) throw new IllegalStateException(\"Flowable tables missing; run schema creation first\");\n}","typeGuard":null,"tryCatchPattern":"try { engineConfiguration.buildProcessEngine(); }\ncatch (FlowableException e) {\n  if (e.getMessage().startsWith(\"Flowable database problem\") || e.getMessage().contains(\"No flowable tables in DB\")) { /* create schema or fix JDBC URL */ }\n  throw e;\n}","preventionTips":["Use databaseSchemaUpdate=true (or create-drop in tests) for fresh environments.","Confirm the JDBC URL/schema points where the tables actually live.","Run DDL scripts manually in environments where auto-update is disabled.","Verify DB grants allow reading system tables for the existence check."],"tags":["database","schema","missing-tables","configuration"],"backgroundTag":"database-table-missing","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}