我看到很多次报道过类似的问题。就我而言,我直接使用我自己的JNI库(不是Android Java层)调用的“C”API,以及最新的合并3.8.3。所以我控制着我正在处理的事情。 然后,在某些操作(UPDATE)上,我收到一条错误,指出它无法打开数据库文件。我没有使用INSERT语句,只有UPDATE。 当我激活SQLite错误回调时,我看到以下内容:
无法打开[6c643e45c2] os_unix.c第29299行的文件:29299:(13) open(./ etilqs_1zMsiYdpXhd3JqY) - 语句在36处中止:[UPDATE .....]
进一步深入研究,它似乎与日志文件有关。当我使用pragma将journal_mode设置为MEMORY时,问题就会消失。但是所有其他模式,如WAL或TRUNCATED都会导致相同的错误。
从eclipse调试代码时,我可以看到在执行INSERT时创建的-journal文件。然后在交易完成时删除。所以它告诉我它对目录(/ data / data //)
有足够的权限请注意,完全相同的代码在Windows上完美运行(C& Java),我没有收到错误。 Android和文件访问肯定会发生一些事情。
我有办法系统地重现错误。如果有人对我应该检查的内容有所了解,那么我很乐意进行一些实验并报告结果。
答案 0 :(得分:2)
太迟回答..
我在使用多线程时看到同样的问题。
在第一个查询中发送下一个语句查询。
PRAGMA temp_store_directory ='一些可写路径'
SQLITE3文档说“已弃用”,但是......这对我有用..
真的被弃用吗?
祝你好运..PS。我的sqlite3版本是[sqlite-amalgamation-3100200]