禁用Android Pie中的sqlite Write-Ahead日志记录

禁用Android Pie中的sqlite Write-Ahead日志记录,第1张

概述在 Android Pie sqlite默认情况下已启用Write-Ahead日志记录(WAL).这仅在Pie设备中导致现有代码出错. 由于我访问数据库的方式,我无法使用SQLiteDatabase.disableWriteAheadLogging()或PRAGMA journal_mode成功关闭WAL.我想用一个名为db_compatibility_wal_supported的Android设 在 Android PIE sqlite默认情况下已启用Write-Ahead日志记录(WAL).这仅在PIE设备中导致现有代码出错.
由于我访问数据库的方式,我无法使用sqliteDatabase.disableWriteAheadLogging()或PRAGMA journal_mode成功关闭WAL.我想用一个名为db_compatibility_wal_supported的AndroID设置完全禁用WAL:

Compatibility WAL (Write-Ahead Logging) for Apps

有谁知道如何配置这个?我不知道这个文件是否可以在启动时以编程方式更改,或者是否手动更改.

关于这个问题的进一步细节

我的应用程序中有一个sqlite数据库(20mb / 250k记录).此db是使用我的服务器上的普通java生成的.它包含一个食物数据库,应用程序的用户可以添加到数据库(并更新服务器).这存储在androID中的assets文件夹中.
在首次安装期间,数据库将从资产复制到app文件夹,以便可以使用以下方法将其写入:

Copy SQLite database from assets folder

不幸的是,一旦我开始使用sqlDroID写入数据库,wal就会启用并且原始数据库中的表已经消失,只剩下任何新创建的表.然而,数据库的大小仍然是20mb.所有数据库错误都是由于缺少表.
表复制和写入方法在PIE之前的AndroID版本中完美运行.

解决方法 @Rockvole请分享您所面临的错误,这有助于我们找到合适的解决方案.

同时,我明白你想要在androID馅饼中关闭那个WAL并且你正在使用“sqlDroID”lib来创建sqlite DB.

这个lib内部使用“sqliteDatabase”在本地存储数据,我认为你需要在“sqliteDatabase”类中调用“sqliteDatabase.disableWriteAheadLogging()”,其中数据库实例创建的包名是“package org.sqldroID;”

或获取内部sqliteDatabase实例并调用disableWriteAheadLogging().

第二个解决方案是在values文件夹中创建“config.xml”,并且“< bool name =”db_compatibility_wal_supported“> false< / bool>”并运行并检查其工作.

总结

以上是内存溢出为你收集整理的禁用Android Pie中的sqlite Write-Ahead日志记录全部内容,希望文章能够帮你解决禁用Android Pie中的sqlite Write-Ahead日志记录所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1126271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存