Interpreting Database-related Error Messages

Data Base Management Systems (DBMS) produce errors that can be confusing to the typical Advantage User.  Two common examples of these messages are typically the result of a duplicate record on an insert, or a deadlock condition within the database.  The format of the message varies depending upon the DBMS that is being used (that is, Oracle, SQL Server, or PostgreSQL).  Advantage intercepts these messages and substitutes them with a more meaningful message, as indicated on the Messages table.  The following table provides the DBMS Message and a cross reference to the Advantage error message that is displayed to the user.

DBMS Message

Error Code

SQL State

Error Message (MESG)

ORA-00001: unique constraint (Table name) violated

SQL Server:  Violation of %ls constraint '%.*ls'. Cannot insert duplicate key in object '%.*ls'.

PostgreSQL: duplicate key value violates unique constraint %s

Oracle: 00001

SQL Server: 2627

PostgreSQL: 23505

Oracle: 23000

PostgreSQL: 23505

(For tables without AutoNumber columns)
Q0134 - A unique index was violated. This could be due to a duplicate record insertion or a modification of a unique attribute, %table name% %SQLCODE% %SQLSTATE%.

ORA-00060: deadlock detected while waiting for resource

SQL Server:  Transaction (Process ID %d) was deadlocked on {%Z} resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

PostgreSQL: deadlock detected. Process (process ID %d) waits for ShareLock on transaction (process id %z); blocked by process (process id %z)

Oracle:  60

SQL Server: 1205

PostgreSQL: 40P01

Oracle: 61000

PostgreSQL: 40P01

Q0135 - Two or more transactions deadlocked with each other while waiting to process.  Please resubmit the transaction: %SQLCODE% %SQLSTATE%.

ORA-01438: value larger than specified precision allowed for this column.

SQLServer: 8115: Arithmetic overflow error converting expression to data type numeric.

PostgreSQL: 22001: value too long for type character varying(n)  

Oracle: 01438

SQLServer:8115

PostgreSQL: 22001  

Oracle:22003

SQLServer:22003

PostgreSQL: 22001

Amount entered is larger than maximum allowable value in database.