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
- Click 'Yes' on the auto-generate prompt to fall back to plain-SQL DDL
- Fix the underlying struct-DDL error shown in the preceding error dialog (often one of errors 97/98/99)
- 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
- Address the struct-DDL failure (errors 97/98/99) so the fallback prompt is not needed
- Accept the auto-generated SQL fallback when struct DDL fails
- Fix column/type mappings before re-running
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
- Can't insert row
- No target datasource - can't create target objects
- No target container selected
- Can't create or update target table:\n" + SQLUtils.generateS
- New table " + containerMapping.getTargetName() + " not found
AI-assisted analysis of dbeaver/dbeaver@1e5ee1042b (2026-08-13).
Data as JSON: /api/errors/65afbdc7d5c96056.
Report an issue: GitHub.