Errors and diagnostics
Each DNML problem has a stable code and a message. Find what a code means and what to do.
- A problem in the file also has a location: the file, line, column, operation and field.
- Messages never show secret variable values or the SQL of Athena and Amazon Aurora DSQL operations. Dynomate also removes the SQL from the detail and hint of an Aurora DSQL error.
- Dynomate shortens S3 output paths to the bucket and the last part of the key.
In the app
When you edit a request:
- The Operations rail and each operation tab show the number of issues.
- Select a file diagnostic above the workbench to go to its field.
- Problems with the profile, AWS Region, table ARN, cluster ARN or database role show under the operation header.
- If the editor cannot show the file, select Reveal file and correct it in a text editor.
When you run the request:
- If validation fails, the results panel shows the diagnostics, and no operation runs.
- A failed operation row shows
CODE: message. Expand the row, then open Metadata for the details and warnings. - Request errors, for example a timeout, show above the operation rows.
- A failed Batch write shows the result of each write under Diagnostic result in Data.
In the CLI
requests run prints the result to stdout, also when the request fails.
- The
prettyformat printsCODE: message, thenat file:line:columnif the location is known. Warnings show onwarning:lines. - With
--format=json, the requesterrorhascode,messageanddetails. For a validation error,detailshas the location. - Each failed operation has
outcomes[].errorwithcodeandmessage. It can also haveawsErroranddetails. - If validation fails, the CLI shows only the first diagnostic. To see all diagnostics, open the request in the app.
- A failed Aurora DSQL operation can also show a
commit:line. See Cancel a run.
The exit code is 1 if the request fails, and 2 if the arguments are not valid.
Error codes
Checked before anything runs
Validation reports these codes. Each one stops the request before the first AWS call.
- DNML_SYNTAX
- The file is not valid TOML, or an expression has an unclosed
${, an unknown function or an unknown cast. Fix: Correct the reported line, and write casts in lowercase. - DNML_UNSUPPORTED_VERSION
- The major version in
versionis not 1. Fix: Setversion = "1.0", or"1.1"for a request with an Aurora DSQL operation. - DNML_SCHEMA
- The file breaks a structure rule that has no specific code, for example a
versionthat is notMAJOR.MINOR. Fix: Compare the reported field with the operation reference. - DNML_MISSING_FIELD
- A required key is missing, for example
name, or all update expression keys of an Update item. Fix: Add the key that the operation reference marks Required. - DNML_UNKNOWN_KEY
- The table or operation has no such key, for example a typo or
tableNameon a DynamoDB operation. Aurora DSQL operations do not acceptendpointUrl,databaseortableArn. Fix: Remove or rename the key. In the app, use Unrecognized fields. - DNML_DUPLICATE_OPERATION
- Two operations have the same normalized name. Fix: Rename one of the operations.
- DNML_ROOT_COLLISION
- A variable has the same name as the normalized name of an operation. Fix: Rename the variable or the operation.
- DNML_UNKNOWN_DEPENDENCY
-
dependsOnnames an operation that is not in the request. Fix: Use the exact display name of the operation, not its normalized name. - DNML_DEPENDENCY_CYCLE
- Operations depend on each other in a loop. Fix: Remove one
dependsOnentry. - DNML_REGION_MISMATCH
- The
regionof the operation or[defaults]is not the Region intableArnorclusterArn. Fix: Removeregion, or make it match the ARN.
Checked before or during a run
Validation reports these codes if it knows the value. Otherwise, the operation fails with the code before it calls AWS.
- DNML_TYPE_MISMATCH
- A value has the wrong type, or a cast rejects it. Examples are
"1.5"or" 5"cast tointeger, an expression inconsistentRead, and an Aurora DSQL parameter that is a set. Fix: Give the expected type, or use a cast. For an Aurora DSQL parameter, use a list, not a set. - DNML_UNRESOLVED_TEMPLATE
- An expression refers to an unknown variable, a missing path or a failed or skipped operation, or a connection key is empty. Fix: Check the variable names, the selected environments and the earlier results.
- DNML_TYPED_VALUE
- A typed value is not valid, for example
{ N = 5 }instead of{ N = "5" }. Fix: GiveSandNstring values, with a cast if necessary. - DNML_INVALID_TABLE_REFERENCE
-
tableArnis missing or is not a valid DynamoDB table ARN. Fix: Use the formarn:aws:dynamodb:<region>:<account-id>:table/<table-name>. - DNML_INVALID_CLUSTER_REFERENCE
-
clusterArnis not a valid Aurora DSQL cluster ARN. A missingclusterArnisDNML_MISSING_FIELD. Fix: Use the formarn:aws:dsql:<region>:<account-id>:cluster/<cluster-id>. See Connection keys. - DNML_INSECURE_ENDPOINT
-
endpointUrluses plain HTTP for a host that is notlocalhostor a loopback address. Fix: Use HTTPS or a loopback address. - DNML_UNSUPPORTED_OPERATION
- Dynomate does not support the operation type or the export target, for example an S3 export target. Dynomate 2.0 rejects Aurora DSQL operations with this code. Dynomate CLI 0.0.21 and earlier also reject them. Fix: Use an operation from the operation reference and a
"file"export target. For Aurora DSQL operations, update the app and the CLI.
Reported during a run
These codes fail one operation. Its onError key sets what happens next. See Error policy.
- DNML_GUARD_FAILED
- The table name or item count does not match a Delete table or Truncate table guard, so Dynomate deletes nothing. Fix: Make sure that the request targets the correct table before you change the guard.
- DNML_IMPORT_PREFLIGHT
- The import source failed its checks, so Dynomate wrote nothing. The message names each problem:
invalid-attribute-value,missing-partition-key,missing-sort-key,invalid-key-type,key-too-large,duplicate-keyorsame-source-and-destination. Fix: Correct the reported items, or use a different source table. - DNML_UNPROCESSED_ITEMS
- A Batch get or Batch write has unprocessed keys or writes after its retries. Fix: Before you run a Batch write again, read
writeOutcomesto find the unconfirmed writes. - DNML_TIMEOUT
- An operation or request deadline expired, and the error details include any known Athena query execution ID. For Aurora DSQL,
details.commitStatuscan becommitted,rolled-backorunknown. The 5-minute transaction limit of Aurora DSQL givesDNML_AWS, not this code. Fix: IncreasetimeoutMs, or reduce the work. Dynomate does not roll back completed writes. IfcommitStatusisunknown, check the data before you run the request again. - DNML_CANCELLED
- You canceled the run or the operation, for example with Cancel in the request toolbar or Ctrl+C in the CLI. For Aurora DSQL,
details.commitStatuscan becommitted,rolled-backorunknown. Fix: IfcommitStatusisunknown, check the data first. Then run the request again. Dynomate does not roll back completed writes. - DNML_AWS
- AWS or the network returned an error. If AWS gives an error code, for example
ConditionalCheckFailedException, Dynomate shows that code instead. Aurora DSQL errors keepDNML_AWS, andawsError.awsErrorCodeis the SQLSTATE. Theirdetailscan havesqlState,dsqlCode(for exampleOC000),detail,hint,position,statementIndex,attempts,commitStatusandtransactionEndedAt. They have no AWS request ID. Fix: Read the AWS details: the AWS error code, request ID and HTTP status. ForAccessDenied, see Permission errors. For Aurora DSQL, see Aurora DSQL errors and limits. - DNML_IO
- The export file already exists, Dynomate cannot read or write it, or Dynomate cannot register the snapshot. For Aurora DSQL, Dynomate cannot read the network settings from the app database. Fix: Check the path, free space and permissions, or use a new file name. For Aurora DSQL, check the app data directory and its permissions.
- DNML_EXECUTION
- A Truncate table worker stopped unexpectedly. Fix: Run the operation again. Deleted items stay deleted.
Warnings
Warnings do not fail an operation.
- DNML_ROOT_SHADOWED
-
An environment variable or
--inputvalue has the normalized name of an operation. After the operation succeeds, expressions use its result, not the input. Fix: Rename the input or the operation. - csv-values-imported-as-strings
- The import source is CSV, so Dynomate wrote each value as a string. Fix: Use a JSON or JSON Lines source for other types.
- DNML_DSQL_TRANSACTION_OPEN
-
The SQL of a
dsql.queryleft a transaction open on the connection of this run. Its changes are not committed. Fix: RunCOMMITin a later operation on the same connection. If no operation commits, the transaction rolls back when the run ends. - DNML_DSQL_TRANSACTION_ENDED
-
A statement in a
dsql.transactionranCOMMITorROLLBACK. Later statements ran outside the transaction. Fix: Check which changes stayed. Remove the statement, or make it the last one.
CLI codes
Before validation, the CLI reports these codes in error when it checks the app database, loads files, environments and profile settings, or asks for approval.
- MIGRATION_REQUIRED
- The collection uses the legacy request format. Fix: Migrate the collection with the command in the message. To migrate in the app, see Migrate legacy collections.
- FILE_ERROR
- The CLI cannot read a request, marker or environment file. Fix: Check the path and file permissions.
- ENVIRONMENT_NOT_FOUND
- The environment in
--global-envor--collection-envdoes not exist. Fix: Check the environment name and the app data directory. - ENVIRONMENT_LOAD_FAILED
- The CLI cannot load the selected global environment. Fix: Check the app data directory and its permissions.
- ENVIRONMENT_INVALID
- A collection environment file does not contain valid environment data. Fix: Correct the file, or create the environment again in the app.
- PROFILE_LOAD_FAILED
- The CLI cannot load saved profile settings from the app data directory. Fix: Check the app data directory and its permissions.
- APP_DATA_SCHEMA_UNSUPPORTED
- A newer Dynomate app updated the app database, and this CLI version cannot read it. Each
requests runfails. Fix: Update the CLI. See Compatibility with the desktop app. - APPROVAL_FAILED
- The request needs approval, but there is no terminal, or the user declined. Fix: Run the CLI in a terminal. In automation, review the request first, then use
--approval=never. See Approval in automation.