2013-03-29 42 views
2

我有一个Java程序,它与具有journal_mode作为删除的SQLite数据库交互。尝试打开sqlite数据库时,页面大小为64KB时出现异常

此程序适用于所有数据库,并且我能够进行事务,只要数据库的页大小为32 KB。

但是有一个sqlite数据库的页面大小为64 KB。当我尝试执行 stmt.executeQuery(); 上DB,它给了我异常
值java.sql.SQLException:[SQLITE_NOTADB]打开的文件不是数据库文件(文件加密或不是一个数据库)

可有人请让我知道什么事情成为这个解决方案吗?该数据库未加密,并且只有journal_mode作为删除。

虽然我可以用SQLITESpy工具打开这个数据库。

谢谢

+0

你可以使用任何其他SQLite工具打开该文件吗? –

+0

是的,我可以用sqlitespy工具打开这个数据库。 – user1108687

+0

在SQLiteSpy和JDBC驱动程序中,SELECT sqlite_version();'PRAGMA compile_options;'的结果是什么? –

回答

1

如果数据库被另一个应用程序打开并且打开了wal和shm文件,我会得到相同的奇怪错误。因为我不希望这样的奇怪的设计internall细节我用以下解决方法打扰:

echo ".dump" | sqlite3 database.db | sqlite3 dbcopy.db 

,并在副本上的查询工作。我甚至可以通过这种方式防止数据库损坏问题,这似乎也困扰着“新”的sqlite设计。我希望sqlite设计人员能确保外部接口更加稳定和干净,并且不会出现诸如故障和损坏等内部设计问题。

相关问题