Android SQLite IO Exception (SQLiteDiskIOException)

1.log pattern

造成原因 Caused by: android.database.sqlite.SQLiteDiskIOException: disk I/O error (code 4874)

04-01 02:06:38.213 E/AndroidRuntime(  864): *** FATAL EXCEPTION IN SYSTEM PROCESS: main
04-01 02:06:38.213 E/AndroidRuntime(  864): java.lang.RuntimeException: Failed to boot service com.android.server.devicepolicy.DevicePolicyManagerService$Lifecycle: onBootPhase threw an exception during phase 480
04-01 02:06:38.213 E/AndroidRuntime(  864):     at com.android.server.SystemServiceManager.startBootPhase(SystemServiceManager.java:137)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at com.android.server.SystemServer.startOtherServices(SystemServer.java:1043)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at com.android.server.SystemServer.run(SystemServer.java:272)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at com.android.server.SystemServer.main(SystemServer.java:170)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at java.lang.reflect.Method.invoke(Native Method)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-01 02:06:38.213 E/AndroidRuntime(  864): Caused by: android.database.sqlite.SQLiteDiskIOException: disk I/O error (code 4874)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at android.database.sqlite.SQLiteConnection.nativeExecuteForLong(Native Method)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at android.database.sqlite.SQLiteConnection.executeForLong(SQLiteConnection.java:596)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at android.database.sqlite.SQLiteSession.executeForLong(SQLiteSession.java:652)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at android.database.sqlite.SQLiteStatement.simpleQueryForLong(SQLiteStatement.java:107)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at android.database.DatabaseUtils.longForQuery(DatabaseUtils.java:845)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at android.database.DatabaseUtils.longForQuery(DatabaseUtils.java:833)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at android.database.sqlite.SQLiteDatabase.getVersion(SQLiteDatabase.java:864)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:241)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
04-01 02:06:38.213 E/AndroidRuntime(  864):     at com.android.server.LockSettingsStorage.readKeyValue(LockSettingsStorage.java:138)

2.错误码介绍

错误码定义: Result and Error Codes

错误码定义和值如下:

#/external/sqlite/dist/orig/sqlite3.h

** CAPI3REF: Extended Result Codes
** KEYWORDS: {extended result code definitions}
#define SQLITE_IOERR_READ              (SQLITE_IOERR | (1<<8))
#define SQLITE_IOERR_SHORT_READ        (SQLITE_IOERR | (2<<8))
#define SQLITE_IOERR_WRITE             (SQLITE_IOERR | (3<<8))
...
#define SQLITE_IOERR_CLOSE             (SQLITE_IOERR | (16<<8))
#define SQLITE_IOERR_DIR_CLOSE         (SQLITE_IOERR | (17<<8))
#define SQLITE_IOERR_SHMOPEN           (SQLITE_IOERR | (18<<8))
#define SQLITE_IOERR_SHMSIZE           (SQLITE_IOERR | (19<<8))
#define SQLITE_IOERR_SHMLOCK           (SQLITE_IOERR | (20<<8))
#define SQLITE_IOERR_SHMMAP            (SQLITE_IOERR | (21<<8))
#define SQLITE_IOERR_SEEK              (SQLITE_IOERR | (22<<8))

错误码计算方法:
log pattern中code 4874  ,二进制对应为 10011 00001010也就是对应的值为10011 = 19

3.可能原因

1.Disk is full
2.disk is corrupt(checked by FS or driver owner) --概率小
3.文件系统损坏(checked by FS or driver owner) --概率小
4.file不存在 (checked by QA or AP owner)
5.file is a directory (checked by QA or AP owner)
6.no read/write permissions (checked by QA or AP owner)

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值