We have a very complex android application where we use Utlralite 16 and Mobilink 16 as DBMS/sync products.
The field has reported some I/O errors while using the device and despite looking at the documentation (http://dcx.sap.com/index.html#sa160/en/saerrors/errm305.html), we don't really get what can be the root cause of this and help would be greatly appreciated.
Those come in two flavors : - I/O Error 200019 - I/O Error 200020
The devices concerned still have free space on the disk and we ensure a device goes not to sleep by taking a partial wake lock.
Does anybody have any idea of what's going on under the hood / have already experienced such errors ?
As Chris commented, these indicate a read or a write error -- meaning the system call returned an error code when UltraLite tried to read or write a page in the database or temporary file.
These do not indicate any database/SQL level issues, like locking or uncommitted transactions or indexing operations.
These do not necessarily indicate a corrupt database. When UltraLite receives the error, it will suspend operations on the database file in order to avoid corruption. When restarted, the database will recover to the last committed transaction. The error could be transient or recurring, depending on the cause.
Typically this is caused by some kind of hardware or file system problem.
If the application/database is restarted, does the error occur again? (Note that if you don't close and reopen the database, the same error will be reported on subsequent database requests because the database is locked. All open connections must be closed.)
The ulvalid utility can detect and provide information about some kinds of database corruption.
Historically we have seen many surprising problems with SD cards. It is probably worth trying a different card to see if it affects the error (if you are able to swap it on your devices).
answered 08 Jun '16, 21:13