我看到類似的問題已多次報告。在我的情況下,我直接使用我自己的JNI庫(不是Android Java層)調用的「C」API和最新的合併3.8.3。所以我控制着我正在處理的事情。 然後,在某些操作(更新)我收到一個錯誤,指出它無法打開數據庫文件。我沒有得到與INSERT語句,只有更新。 當我啓動SQLite的錯誤回調,我看到以下內容:SQLite&Android:無法打開數據庫文件 - 錯誤14
可以在[6c643e45c2] os_unix.c 29299線無法打開文件:29299:(13) 開放(./ etilqs_1zMsiYdpXhd3JqY) - 報告中止在36:[更新 .....]
挖掘這一點,它似乎與日記文件有關。當我使用編譯指令將journal_mode設置爲MEMORY時,問題就消失了。但所有其他模式,如WAL或TRUNCATED導致相同的錯誤。
從eclipse調試代碼時,我可以看到執行INSERT時創建的-journal文件。然後在交易完成時被刪除。所以它告訴我它在目錄上有足夠的權限(/ data/data //)
請注意,完全相同的代碼在Windows上完美工作(C & Java),我沒有收到錯誤。 Android和文件訪問權限正在確定。
我有一種方法來獲得系統地重現錯誤。如果某人對我應該檢查的內容有一些想法,那麼我會很樂意運行一些實驗並報告結果。
這是一個臨時文件。你是如何配置SQLite庫副本的臨時路徑的? –
我沒有做任何配置。在執行INSERT時,我看到日誌文件是在與DB相同的目錄中創建的。但是執行UPDATE時會失敗。 –
這不是日記文件。這是一個臨時文件。當前目錄('。/')不一定是數據庫文件的目錄。 –