Всякий раз, когда я хочу открыть свою базу данных Couchbase lite в пустой папке data/com.my.app/files/databaseName.cblite2
, то есть:
DatabaseConfiguration config = new DatabaseConfiguration();
database = new Database(databaseName, config);
, я получаю следующую ошибку:
CouchbaseLiteException{CouchbaseLite,21,'file/data is not in the requested format'}
Как мне применить это новая база данных создана вместо? Поэтому в случае успешной загрузки я хотел бы получить старую базу данных, а в случае повреждения данных (ошибка 21) я хотел бы получить новую базу данных Couchbase.
Справочная информация:
Чтобы протестировать некоторые функциональные возможности моего приложения с помощью инструментальных тестов, у меня есть правило тестирования, которое перемещает локальные файлы Couchbase db.sqlite3
, db.sqlite3-shm
и db.sqlite3-wal
в какое-либо резервное хранилище (@Before
) и восстанавливает исходная база данных после теста (@After
).
К сожалению, когда база данных пуста, я получаю указанное выше исключение с кодом 21, что в соответствии с Couchbase Documentation означает, что база данных существует, но имеет неправильный формат.
Когда я проверяю структуру папок в Android Studio 'Device File Explorer', я вижу, что загрузка завершается успешно, если папка data/com.my.app/files/databaseName.cblite2
содержит файл db.sqlite3
или если он полностью отсутствует. Однако, если папка пуста, исключение выдается.
Когда я вручную удаляю папку, устанавливая точку останова, тест работает просто отлично. Есть ли способ принудительного создания базы данных?
Редактировать:
Поскольку удаление папки вручную предотвращает ошибку, мой обходной путь - удалить databaseName.cblite2
папка из файловой системы, если она пуста. Хотя это не самое элегантное решение, я нашел его приемлемым для тестирования.