在 Android Pie 中,sqlite 预写日志 (WAL) 默认已启用。这仅在 Pie 设备中导致我现有代码的错误。由于我访问数据库的方式,我SQLiteDatabase.disableWriteAheadLogging()
无法成功关闭 WAL 。PRAGMA journal_mode
我想使用名为db_compatibility_wal_supported的 Android 设置完全禁用 WAL :
有谁知道如何配置这个?我不知道这个文件是否可以在启动时以编程方式更改,或者是否可以手动更改。
有关问题的更多详细信息
我的应用程序中有一个 sqlite 数据库(20mb+ / 250k 记录)。这个数据库是在我的服务器上使用纯 java 生成的。它包含一个食物数据库,应用程序的用户可以添加到数据库中(并且服务器已更新)。这存储在 android 的 assets 文件夹中。在第一次安装期间,数据库从 assets 复制到 app 文件夹,以便可以写入,有效地使用以下方法:
不幸的是,一旦我开始使用 SqlDroid 写入数据库,wal 就会启用,并且原始数据库中的表已经消失,只剩下任何新创建的表。然而,数据库的大小仍然是 20mb+。所有数据库错误都是由于缺少表。表格复制和写入方法在 Pie 之前的 Android 版本中完美运行。