Troubleshooting SQLite Result Codes from Error 0 to 5
SQLite Result Codes 0 SQLITE_OK
The SQLITE_OK result code means that the operation was successful and that there were no errors. Most other result codes indicate an error.
SQLite Result Codes 1 SQLITE_ERROR
The SQLITE_ERROR result code is a generic error code that is used when no other more specific error code is available.
SQLite Result Codes 2 SQLITE_INTERNAL
The SQLITE_INTERNAL result code indicates an internal malfunction. In a working version of SQLite, an application should never see this result code. If application does encounter this result code, it shows that there is a bug in the database engine.
SQLite does not currently generate this result code. However, application-defined SQL functions or virtual tables, or VFSes, or other extensions might cause this result code to be returned.
SQLite Result Codes 3 SQLITE_PERM
The SQLITE_PERM result code indicates that the requested access mode for a newly created database could not be provided.
SQLite Result Codes 4 SQLITE_ABORT
The SQLITE_ABORT result code indicates that an operation was aborted prior to completion, usually be application request. See also: SQLITE_INTERRUPT.
If the callback function to sqlite3_exec() returns non-zero, then sqlite3_exec() will return SQLITE_ABORT.
If a ROLLBACK operation occurs on the same database connection as a pending read or write, then the pending read or write may fail with an SQLITE_ABORT or SQLITE_ABORT_ROLLBACK error.
In addition to being a result code, the SQLITE_ABORT value is also used as a conflict resolution mode returned from the sqlite3_vtab_on_conflict() interface.
SQLite Result Codes 5 SQLITE_BUSY
The SQLITE_BUSY result code indicates that the database file could not be written (or in some cases read) because of concurrent activity by some other database connection, usually a database connection in a separate process.
For example, if process A is in the middle of a large write transaction and at the same time process B attempts to start a new write transaction, process B will get back an SQLITE_BUSY result because SQLite only supports one writer at a time. Process B will need to wait for process A to finish its transaction before starting a new transaction. The sqlite3_busy_timeout() and sqlite3_busy_handler() interfaces and the busy_timeout pragma are available to process B to help it deal with SQLITE_BUSY errors.
An SQLITE_BUSY error can occur at any point in a transaction: when the transaction is first started, during any write or update operations, or when the transaction commits. To avoid encountering SQLITE_BUSY errors in the middle of a transaction, the application can use BEGIN IMMEDIATE instead of just BEGIN to start a transaction. The BEGIN IMMEDIATE command might itself return SQLITE_BUSY, but if it succeeds, then SQLite guarantees that no subsequent operations on the same database through the next COMMIT will return SQLITE_BUSY.
See also: SQLITE_BUSY_RECOVERY and SQLITE_BUSY_SNAPSHOT.
The SQLITE_BUSY result code differs from SQLITE_LOCKED in that SQLITE_BUSY indicates a conflict with a separate database connection, probably in a separate process, whereas SQLITE_LOCKED indicates a conflict within the same database connection (or sometimes a database connection with a shared cache).
Above are the list of SQLite Result Codes or Error Codes and their Description from Error 0 to 5 while performing certain operations against SQLite.
What are SQLite Errors?
SQLite programs have access to several types of common error information when the server returns an error. The SQLite message displayed contains three types of information:
A numeric error code. This number is SQLite and is not portable to other database systems. All result codes are integers. Symbolic names for all result codes are created using “#define” macros.Primary result code symbolic names are of the form “SQLITE_XXXXXX” where XXXXXX is a sequence of uppercase alphabetic characters. Extended result code names are of the form “SQLITE_XXXXXX_YYYYYYY” where the XXXXXX part is the corresponding primary result code and the YYYYYYY is an extension that further classifies the result code. The names and numeric values for existing result codes are fixed and unchanging. However, new result codes, and especially new extended result codes, might appear in future releases of SQLite.
Hope this was helpful.
Information about SQLite Result Codes or Error Codes and Error Messages or Warnings on Windows, Linux Operating Systems.