dbeaver/dbeaver · warning · DBException

Target table create or update was canceled

Error message

Target table create or update was canceled

What it means

Struct-based DDL generation failed; DBeaver showed an error and asked whether to fall back to auto-generated plain SQL; the user declined, so the operation aborts. This is a user-driven cancellation of the DDL fallback path.

Source

Thrown at plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseTransferUtils.java:218

                return new DBEPersistAction[0];
            }
        }
        monitor.subTask("Validate table structure table '" + containerMapping.getTargetName() + "'");
        if (USE_STRUCT_DDL) {
            try {
                final List<DBEPersistAction> actions = new ArrayList<>();
                generateStructTableDDL(monitor, executionContext, schema, containerMapping, actions, changedProperties);
                if (hasExtraTargetStructure) {
                    Collections.addAll(actions, consumerSettings.generateExtraTargetTableDDL(
                        monitor, executionContext, schema, containerMapping));
                }
                return actions.toArray(DBEPersistAction[]::new);
            } catch (DBException e) {
                DBWorkbench.getPlatformUI().showError("Can't create or update target table", null, e);
                if (!DBWorkbench.getPlatformUI().confirmAction(
                    "Generate DDL automatically",
                    "Do you want to create or update target object with auto-generated SQL script?")) {
                    throw new DBException("Target table create or update was canceled");
                }
            }
        }

        // Struct doesn't work (no proper object managers?)
        // Try plain SQL mode

        DBPDataSource dataSource = executionContext.getDataSource();

        String tableName;
        if (containerMapping.getMappingType() == DatabaseMappingType.create) {
            tableName = getTransformedName(dataSource, containerMapping.getTargetName(), false);
        } else {
            tableName = DBObjectNameCaseTransformer.transformName(dataSource, containerMapping.getTargetName());
        }
        containerMapping.setTargetName(tableName);

        if (CommonUtils.isEmpty(tableName)) {

View on GitHub (pinned to 1e5ee1042b)

Solutions

  1. Click 'Yes' on the auto-generate prompt to fall back to plain-SQL DDL
  2. Fix the underlying struct-DDL error shown in the preceding error dialog (often one of errors 97/98/99)
  3. Adjust the mapping (columns/types) and retry
Defensive patterns

Strategy: try-catch

Try / catch

try {
    DatabaseTransferUtils.generateTargetTableDDL(monitor, ctx, schema, mapping, props, settings);
} catch (DBException e) {
    if ("Target table create or update was canceled".equals(e.getMessage())) {
        // user declined the SQL fallback; reconfigure mapping and retry
        log.info("User declined auto-generated DDL");
    } else {
        throw e;
    }
}

Prevention

When it happens

Trigger: generateStructTableDDL throws a DBException inside the try block, then DBWorkbench.getPlatformUI().confirmAction(...) returns false.

Common situations: The driver's struct editor cannot handle the mapping; the user prefers to fix the mapping manually rather than accept generated SQL.

Related errors


AI-assisted analysis of dbeaver/dbeaver@1e5ee1042b (2026-08-13). Data as JSON: /api/errors/65afbdc7d5c96056. Report an issue: GitHub.