“SQLiteDiskIOException:错误代码10:磁盘I / O错误”在DROP TABLE上的ICS和Samsung Nexus上重新调整

时间:2011-12-15 12:54:15

标签: android android-sqlite

我收到以下错误:

android.database.sqlite.SQLiteDiskIOException: error code 10: disk I/O error
    at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
    at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:92)
    at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1926)
    at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1866)

我只在Samsung Nexus手机上的ICS 4.0.1上出现此错误。在模拟器,Motorola Xoom 3.2和HTC Desire 2.3.3上,代码工作正常。我的代码针对SDK的版本8或2.2.x。 execSQL执行如下:

db.execSQL("DROP TABLE IF EXISTS " + table.getTableName());

数据库存储在内部,而不是SD卡。关于如何解决这个问题的任何建议?

1 个答案:

答案 0 :(得分:6)

解决了这个问题。

问题是在drop table语句之前有一个Context.deleteDatabase('dbName')语句显然删除了db,然后报告的I / O错误非常有意义。

以前(不必要地)使用了腰带和背带方法。

然而有趣的是,在转移到ICS之前,这并没有表现出问题。