flowable/flowable-engine · error · FlowableException

SQL Exception when getting value. Message: ${e.getMessage()}

Error message

SQL Exception when getting value. Message: ${e.getMessage()}

What it means

AbstractSqlScriptBasedDbSchemaManager.getProperty reads a value (e.g. schema.version) from a property table via raw SQL. When the table-check flag is disabled and the SQLException indicates the table is missing, it throws FlowableException. If the exception does not look like a missing-table error it logs and returns null instead.

Source

Thrown at modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/db/AbstractSqlScriptBasedDbSchemaManager.java:202

        
        SchemaManagerDatabaseConfiguration databaseConfiguration = getDatabaseConfiguration();

        if (!databaseConfiguration.isTablePrefixIsSchema()) {
            tableName = prependDatabaseTablePrefix(tableName);
        }
        try (PreparedStatement statement = databaseConfiguration.getConnection()
                .prepareStatement("select VALUE_ from " + tableName + " where NAME_ = ?")) {

            statement.setString(1, propertyName);
            ResultSet resultSet = statement.executeQuery();
            if (resultSet.next()) {
                return resultSet.getString(1);
            } else {
                return null;
            }
        } catch (SQLException e) {
            if (!checkPropertyTablePresent && isMissingTablesException(e)) {
                throw new FlowableException("SQL Exception when getting value. Message: " + e.getMessage(), e);
            }
            logger.error("Could not get property from table {}", tableName, e);
            return null;
        }
    }
    
    protected String getPropertyTable() {
        return PROPERTY_TABLE;
    }
    
    public String getResourceForDbOperation(String directory, String operation, String component, String databaseType) {
        return getResourcesRootDirectory() + directory + "/flowable." + databaseType + "." + operation + "." + component + ".sql";
    }
    
    protected abstract String getResourcesRootDirectory();
    
    public void executeMandatorySchemaResource(String operation, String component) {
        String databaseType = getDatabaseConfiguration().getDatabaseType();

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Run the schema creation/upgrade first (databaseSchemaUpdate=true or execute the schema scripts) so the property table exists.
  2. Check the chained SQLException cause for the real SQL error (permissions, wrong schema) and fix it.
  3. Verify the database user can access the schema containing ACT_GE_PROPERTY.

Example fix

// before
<property name="databaseSchemaUpdate" value="false"/>
// after
<property name="databaseSchemaUpdate" value="true"/> <!-- creates missing tables on startup -->
Defensive patterns

Strategy: try-catch

Validate before calling

// ensure property table exists before reading properties
DatabaseMetaData md = connection.getMetaData();
ResultSet rs = md.getTables(null, null, "ACT_GE_PROPERTY", null);
boolean present = rs.next();

Try / catch

try { engineCfg.buildProcessEngine(); } catch (FlowableException e) { if (e.getMessage().contains("SQL Exception when getting value")) { /* run schema creation first */ } throw e; }

Prevention

When it happens

Trigger: getProperty called with checkPropertyTablePresent=false against a database where the property table (e.g. ACT_GE_PROPERTY) does not exist and the driver's error is recognized as a missing-table error — typically during schema install before tables exist.

Common situations: Fresh database without Flowable tables while a component tries to read schema properties; database user lacking SELECT permission on the property table; manually dropped tables; multi-schema setups where the table lives in another schema.

Understand the failure class

Background: "query failed", "%w: SQL error" — wrapped database query errors in Go libraries explained — this error's family across 3 libraries.

Related errors


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/20224f073bcc8e60. Report an issue: GitHub.