Transaction error codes in YSQL
Due to the strong ACID properties guaranteed by YugabyteDB, failures during transactions are inevitable. You need to design your applications to take appropriate action on failed statements to ensure they are highly available. YugabyteDB returns various error codes for errors that occur during transaction processing.
The following error codes typically occur during transaction processing.
25001: Active SQL transaction
This error occurs when certain statements that should be run outside a transaction block, typically because they have non-rollback-able side effects or do internal commits, are executed inside a transaction block. For example, issuing a BEGIN
statement inside a transaction.
WARNING: 25001: there is already a transaction in progress
25006: Read only SQL transaction
This error occurs when certain statements are executed in a read-only transaction that violate the read-only constraint. For example, modifying records inside a read-only transaction.
ERROR: 25006: cannot execute UPDATE in a read-only transaction
25P01: No active SQL transaction
This error occurs when certain statements that should be executed in a transaction are executed outside of a transaction. For example, issuing a ROLLBACK
outside a transaction.
WARNING: 25P01: there is no transaction in progress
25P02: In failed SQL transaction
This error occurs when statements have failed inside a transaction and another statement other than COMMIT
or ROLLBACK
is executed.
ERROR: 25P02: current transaction is aborted, commands ignored until end of transaction block
try..catch
block and either COMMIT
or ROLLBACK
should be executed appropriately.
25P03: Idle in transaction session timeout
This occurs when an application stays idle longer than idle_in_transaction_session_timeout
in the middle of a transaction.
FATAL: 25P03: terminating connection due to idle-in-transaction timeout
40001: Serialization failure
This error occurs when a transaction cannot be applied or progress further because of other conflicting transactions. For example, when multiple transactions are modifying the same key.
ERROR: 40001: Operation expired: Transaction XXXX expired or aborted by a conflict
2D000: Invalid transaction termination
This error occurs when a transaction is terminated either by a COMMIT
or a ROLLBACK
in an invalid location. For example, when a COMMIT
is issued inside a stored procedure that is called from inside a transaction.
ERROR: 2D000: invalid transaction termination
3B001: Invalid savepoint specification
This error occurs when you try to ROLLBACK
to or RELEASE
a savepoint that has not been defined.
ERROR: 3B001: savepoint "FIRST_SAVE" does not exist
Learn more
- Transaction isolation levels - Various isolation levels that are supported by YugabyteDB.
- Concurrency control - Policies to handle conflicts between transactions.
- Transaction priorities - Priority buckets for transactions.
- Transaction options - Options supported by transactions.