2016-02-05 296 views
2

在我的應用程序中,我使用ORMLite將數據插入到SQLite數據庫中。在某些設備上,插入數據時出現以下錯誤:SQLite語句中止,數據庫鎖定在Android應用程序

02-05 09:29:56.864 22365-22441/com.app E/SQLiteLog﹕ (5) statement aborts at 2: [PRAGMA journal_mode=PERSIST] 
02-05 09:29:56.864 22365-22441/com.app W/SQLiteConnection﹕ Could not change the database journal mode of '/data/data/com.app/databases/app.db' from 'wal' to 'PERSIST' because the database is locked. This usually means that there are other open connections to the database which prevents the database from enabling or disabling write-ahead logging mode. Proceeding without changing the journal mode. 

我不知道如何解決ORMLite的這個問題。有沒有人有解決我的問題?只有訪問一個SQLOpenHelper不會解決我的問題,因爲我使用ORMLite,並且不要直接從我的代碼中使用SQLOpenHelper。

+0

的可能的複製[Android的數據庫鎖定](http://stackoverflow.com/questions/7930139/android-database-locked) –

+0

@AmitVaghela他沒有使用ORMLite –

+0

檢查該解決方案將解決您的問題@Bart Bergmans –

回答

0

在此語句之前您是否正在使用查詢,似乎該威脅的執行仍在執行?

也許你需要等待結果才能開始其他查詢? 不知道如果是這樣的情況下試圖用雅思考。

0

正如錯誤所述,在進行操作中。也許某種操作在另一個設備中較慢。檢查你的代碼記住它

+0

我怎麼能看看哪些操作正在運行?我等了一會兒,然後再運行一個新的查詢,我仍然得到錯誤。在其他設備上,我沒有這個問題。 –

0

我想我得到了一個解決方案。我執行從我的每個DatabaseManagers的下面的代碼:

SQLiteDatabase db = helper.getWritableDatabase(); 
Cursor cursor = db.rawQuery("PRAGMA journal_mode = WAL;", null); 
cursor.close(); 

我得到少了很多放棄語句錯誤,但我仍然得到其中的幾個。我應該在每次查詢後運行該代碼還是這不是一個好的解決方案?

相關問題