Informix Error -6064: Tried to terminate a transaction that hasn't been started.
Cause and resolution
Tried to terminate a transaction that hasn't been started.
The program has called either dbcommit() or dbrollback() when a transaction is not in effect. Either dbbegin() had not been called to start a transaction, or a call to dbcommit(), dbrollback(), or dbselect() had already ended the transaction. Review the program logic to see why this error occurred.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-6064 fires when dbcommit() or dbrollback() is called with no transaction in effect — per the archived catalogue, either dbbegin() was never called, or a prior dbcommit()/dbrollback()/ dbselect() already ended the transaction.
- dbbegin() never called before dbcommit()/dbrollback(), per the archived catalogue.
- A prior dbcommit()/dbrollback()/dbselect() already ending the transaction, per the archived catalogue.
Solutions / Resolution
- Review the program logic to find why the transaction wasn't active, per the archived catalogue.
Examples
N/A
No specific triggering statement is documented beyond the function-level condition described above.
Diagnostic Checks
- Confirm dbbegin() ran, and that nothing already closed the transaction before this call.
Related Errors / Related Topics
- -6065 — "Database does not have transactions."
- -6067 — "Tried to unlock a table inside a transaction."
- -6069 — "Tried to lock a table outside a transaction."
A commit/rollback with no active transaction — check that dbbegin() ran and nothing closed it already.