我使用python sqlite3模块通过网络共享连接到SQLite数据库。有3台计算机连接到数据库,但它们似乎已经在他们认为的数据库中漂移了。我打印了几次感兴趣的桌子,得到了以下结果:
1 /这就是我找到这张桌子的方式。由于第3行和第4行有结束时间但不是开始,因此这里出现了问题。注意第5行正在EDI-8433H5J上运行:
Row Status Host Start End
---------- ---------- ----------- -------------------------- --------------------------
0 F EDI-26WDF5J 2014-04-15 12:02:32.152000 2014-04-15 23:10:39.664000
1 R EDI-5RRXXX1 2014-04-16 04:49:12.853000
2 R EDI-26WDF5J 2014-04-16 09:04:14.556000
3 S 2014-04-16 04:49:12.822000
4 S 2014-04-16 09:13:16.596000
5 R EDI-8433H5J 2014-04-16 09:13:16.643000
6 W
2 / EDI-26WDF5J无法运行并写了一个' F'状态到第2行。但EDI-8433H5J的第5行是哪里?
Row Status Host Start End
---------- ---------- ----------- -------------------------- --------------------------
0 F EDI-26WDF5J 2014-04-15 12:02:32.152000 2014-04-15 23:10:39.664000
1 R EDI-5RRXXX1 2014-04-16 04:49:12.853000
2 F EDI-26WDF5J 2014-04-16 09:04:14.556000 2014-04-16 09:51:50.592000
3 S 2014-04-16 04:49:12.822000
4 W
5 W
6 W
3 / EDI-5RRXXX1然后无法正常运行并写入' F'第1行的状态。它已从EDI-26WDF5J注册更新。
Row Status Host Start End
---------- ---------- ----------- -------------------------- --------------------------
0 F EDI-26WDF5J 2014-04-15 12:02:32.152000 2014-04-15 23:10:39.664000
1 F EDI-5RRXXX1 2014-04-16 04:49:12.853000 2014-04-16 09:54:14.967000
2 F EDI-26WDF5J 2014-04-16 09:04:14.556000 2014-04-16 09:51:50.592000
3 S 2014-04-16 04:49:12.822000
4 W
5 W
6 W
4 /现在EDI-8433H5J无法运行并写了一个' F'状态为第5行。但第1行和第2行的状态与更改之前的状态相同。
Row Status Host Start End
---------- ---------- ----------- -------------------------- --------------------------
0 F EDI-26WDF5J 2014-04-15 12:02:32.152000 2014-04-15 23:10:39.664000
1 R EDI-5RRXXX1 2014-04-16 04:49:12.853000
2 R EDI-26WDF5J 2014-04-16 09:04:14.556000
3 S 2014-04-16 04:49:12.822000
4 S 2014-04-16 09:13:16.596000
5 F EDI-8433H5J 2014-04-16 09:13:16.643000 2014-04-16 10:16:06.728000
6 W
EDI-8433H5J与EDI-26WDF5J和EDI-5RRXXX1有完全不同的数据库。
请注意,这是在Windows共享上执行的,而且我还可以离线"所有计算机上包含数据库的文件夹的选项。这会导致不同连接之间存在替代现实吗?
我似乎无法手动重新创建问题,所以我有点难过。任何帮助将不胜感激。
编辑:结论
所以,我想故事的寓意是不要尝试使用脱机文件访问网络共享SQLite数据库,正如Andrew Medico所说,Windows(* nix too?)将无法合并数据库成功(数据库文件存在一些同步错误)。这可能是导致不同版本的数据库出现在不同机器上的原因。