我有一位用户报告说他有运行Android v 2.2.2的HTC Desire和运行Android v 2.3.4的HTC Flyer平板电脑。
我的应用在平板电脑上创建的任何数据库(Sqlite)都无法在手机上阅读。可以在任一设备上读取在其手机上创建的任何数据库。 (希望我能以正确的方式进行,但希望你能得到这个想法)
我想这是因为数据库引擎的不同版本。有没有办法处理这个并将一个数据库转换为与另一个数据库相同的格式,允许两个设备打开数据库,无论哪个设备创建它?
我确实找到了这个建议使用命令行进行转换的链接。虽然对设备不是很有帮助。 http://www.sqlite.org/formatchng.html
答案 0 :(得分:0)
似乎问题是WAL模式已打开。 http://www.sqlite.org/wal.html
WAL应该默认为Off(并且在我的所有Nexus设备上都是)。
我只能假设某些制造商认为将设置默认设置为On会很有趣,因此会使数据库与早期版本不兼容。
在3.7.0之前的任何版本的SQLite中都不支持Wal模式,如果尝试,则如果在其上设置了此标志,则无法打开数据库。