SQLiteException: Can't upgrade read-only database

1、报错内容:

SQLiteException: Can't upgrade read-only database from version xx to yy:/data/data/com.xxx/databases/xxx.db at xxx.xxx.database.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:197) at com.xxx.dao省略。。。

引发操作:

前些天把对数据库的查询语句中获取数据库的方式由getWritableDatabase改成getReadableDatabase,导致后面升级数据库的时候,getReadableDatabase修改没权限升级。。。改回getWritableDatabase就好了

---------------------------------------------------------------------------------------------------------

2、报错内容:

SQLiteException: table xxx already exists: create table xxx(xxx text, xxx text, xx text, primary key (xxx ,xxx )); at  SQLiteDatabase.native_execSQL(Native Method) at SQLiteDatabase.execSQL(SQLiteDatabase.java:1835) at com.xxx.dao.xxxDBOpenHelper.onCreate(xxxDBOpenHelper.java:45) at com.xxx.dao.xxxDBOpenHelper.onUpgrade(xxxDBOpenHelper.java:58) at SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:123) at 省略。。。

引发操作:

原数据库保存有两张表,改动了其中一张表的结构/字段,在升级数据库的时候,xxxDBOpenHelper.onUpgrade方法没有一起删掉两张表。。。

---------------------------------------------------------------------------------------------------------

3、报错内容:

SQLiteMisuseException: library routine called out of sequence: 

引发操作:

官方有如下几种解释:
1.调用API所用到的指针,第一种情况是没有从sqlite3_open()或者是sqlite3_open16()获得,第二种情况是sqlite3_open()函数已经将数据库关闭了。
2. 两个或者更多的线程同时访问该数据库。对于这样的问题,可以通过加上锁进行解决。
3. sqlite3_step()所用到的变量statement指针,第一种情况是该指针不是从sqlite3_prepare()或者是sqlite3_open16()获得的,第二种情况是该指针已经被销毁或者被释放。这个和1中的情况是一样的,不同的是使用这种指针的函数,两者可以和为一种情况。

4. 试图将values绑定到一个正在运行的statement上。该解释未遇到。

在我的工程里面,应该是多线程操作数据库导致的,算是以前的历史遗留问题了,使用单例的方式操作数据库即可,详情看另一个博客如何在多线程操作数据库

---------------------------------------------------------------------------------------------------------

4、报错内容:

java.lang.IllegalArgumentException: the bind value at index 3 is null 

引发操作:

原因是操作数据库的时候,用到了where的操作,但是参数null造成的。StackOverflow上的回答:

http://stackoverflow.com/questions/9156528/giving-error-that-the-bind-value-at-index-4-is-null

http://stackoverflow.com/questions/4572090/illegalargumentexception-the-bind-value-at-index-1-is-null


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章