强制创建 Couchbase Lite 2.6 数据库

Force creation of Couchbase Lite 2.6 database

每当我想在一个空 data/com.my.app/files/databaseName.cblite2 文件夹中打开我的 Couchbase lite 数据库时,即:

DatabaseConfiguration config = new DatabaseConfiguration();
database = new Database(databaseName, config);

我收到以下错误:

CouchbaseLiteException{CouchbaseLite,21,'file/data is not in the requested format'}

如何强制创建新数据库?因此,如果加载成功,我想获取旧数据库,如果数据损坏(错误 21),我想获取新的 Couchbase 数据库。

背景:

为了通过仪器测试测试我的应用程序的某些功能,我有一个测试规则,将本地 Couchbase 文件 db.sqlite3db.sqlite3-shmdb.sqlite3-wal 移动到某个备份位置(@Before) 并在测试后恢复原始数据库 (@After).

不幸的是,每当数据库为空时,我都会收到代码为 21 的上述异常,根据 Couchbase Documentation 这意味着数据库存在但格式错误。

当我在 Android Studio 的 'Device File Explorer' 中检查文件夹结构时,我发现如果文件夹 data/com.my.app/files/databaseName.cblite2 包含 db.sqlite3 文件或文件完全丢失,则加载成功.但是,如果文件夹为空,则抛出异常。

当我通过设置断点手动删除文件夹时,测试正常。 有没有办法强制创建数据库?

编辑:

由于手动删除文件夹可以防止错误,我的解决方法是从文件系统中删除 databaseName.cblite2 文件夹以防它为空。虽然这不是最优雅的解决方案,但我发现它可以接受测试。

这是按设计运行的。

Couchbase 将 SQLite 创建的数据库目录的存在视为数据库存在的证据。删除文件夹的内容不是一件合理的事情。要删除数据库,正如您在编辑中指出的那样,删除目录及其内容。

更好的是,使用 db.delete()