与sqlite DB的向后兼容性
在我的应用程序中,我使用的是SQLite v3.8.4的合并嵌入式版本。在过去,我与v3.7在页面大小>32768方面存在兼容性问题。现在我想保持数据库文件与v3.6.20的向后兼容性(RHEL6上的默认设置),但是当我尝试在RHEL6机器上打开我的DB文件时,我看到了错误:与sqlite DB的向后兼容性,sqlite,compatibility,Sqlite,Compatibility,在我的应用程序中,我使用的是SQLite v3.8.4的合并嵌入式版本。在过去,我与v3.7在页面大小>32768方面存在兼容性问题。现在我想保持数据库文件与v3.6.20的向后兼容性(RHEL6上的默认设置),但是当我尝试在RHEL6机器上打开我的DB文件时,我看到了错误: Error: file is encrypted or is not a database 我可以将数据库转储到SQL文件,然后再次将其导入v3.7。这似乎可以在v3.6.20上实现可读性,但我的数据库大小为3 GB,并
Error: file is encrypted or is not a database
我可以将数据库转储到SQL文件,然后再次将其导入v3.7。这似乎可以在v3.6.20上实现可读性,但我的数据库大小为3 GB,并且不可能为每个转储等待2小时
我可以在v3.8上设置哪些选项来生成与v3.6兼容的数据库
数据库转储
$ hexdump -C works-on-3.6.20.sqlite | head -n 8
00000000 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 |SQLite format 3.|
00000010 04 00 01 01 00 40 20 20 00 00 00 01 00 2d 8c 51 |.....@ .....-.Q|
00000020 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 01 |................|
00000030 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................|
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 |................|
00000060 00 2d e2 21 05 00 00 00 02 03 f6 00 00 22 fd 07 |.-.!........."..|
00000070 03 fb 03 f6 01 8f 02 38 00 7c 01 61 81 62 07 07 |.......8.|.a.b..|
$ hexdump -C fails-on-3.6.20.sqlite | head -n 8
00000000 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 |SQLite format 3.|
00000010 80 00 02 02 00 40 20 20 00 00 00 04 00 00 00 2b |.....@ .......+|
00000020 00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 01 |................|
00000030 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................|
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 |................|
00000060 00 2d e6 04 0d 7f fc 00 18 75 a4 00 7f 36 7f c9 |.-.......u...6..|
00000070 7e 6b 7f 0b 7d 8f 7e 38 7c 7e 7d 62 7b ab 7c 47 |~k..}.~8|~}b{.|G|
已启用非工作数据库,该数据库在版本3.7.0中引入。它。对于工作和非工作文件,
hextump-C数据库文件| head-n8
的输出是什么?@CL.编辑问题就是这样。我已经通过手动发出PRAGMA journal\u mode=DELETE更新了数据库;现在可以用了,谢谢!