0

我有一个用户报告说他有一台运行 Android v 2.2.2 的 HTC Desire 和一台运行 Android v 2.3.4 的 HTC Flyer 平板电脑。

我的应用在他的平板电脑上创建的任何数据库(Sqlite)都无法在他的手机上读取。在他的手机上创建的任何数据库都可以在任一设备上读取。(希望我得到了正确的方法,但希望你明白)

我猜这是因为数据库引擎的版本不同。有没有办法处理这个问题并将一个数据库转换为与另一个数据库相同的格式,允许两个设备打开数据库,而不管是哪个设备创建的?

我确实找到了这个链接,它建议使用命令行进行转换。虽然在设备上不是很有帮助。http://www.sqlite.org/formatchng.html

4

1 回答 1

0

似乎问题在于 WAL 模式已打开。http://www.sqlite.org/wal.html

WAL 应该默认为关闭(在我所有的 Nexus 设备上都是如此)。

我只能假设一些制造商认为将设置默认为 On 会很有趣,因此会使数据库与早期版本不兼容。

早于 3.7.0 的任何 SQLite 版本都不支持 Wal 模式,如果尝试,如果在数据库上设置了此标志,则无法打开数据库。

于 2013-01-29T08:09:17.913 回答