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


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