При сжатии файлов litedb приложение не может найти индекс в ._id . Как я мог это исправить?

#nosql #litedb

#nosql #litedb

Вопрос:

Я использую версию litedb 3.xx и хочу уменьшить файл, поскольку он всегда увеличивает свой размер.

Я сократил его с помощью кнопки «сжать» LiteDbExplorer, но теперь приложение не может использовать этот файл БД. Но все же это кажется хорошим при использовании viewer litedbexplorer, litedbviewer, litedbstudio. Я хорошо вижу данные на этих зрителях.

но при запуске приложения появляется сообщение типа «LiteDB.LiteException: индекс не найден в ‘<имя_коллекции>._id’ в LiteDB.Query.Run(CollectionPage col, indexService indexer) в LiteDB.LiteEngine.<>c__displayClass14_0.b__0(Collectionpage col) ~~~ …»

Я сделал это сломанным? но индекс на _id (первичный ключ) и другие индексы все еще существуют хорошо. Я проверяю это с помощью «db.collectionname.indexes».

кто-нибудь мне поможет?

Ответ №1:

Это было из-за ограничения имен коллекций. Если имя коллекции не подходит, оно не может манипулировать собой, а не только своими документами.

А также у функции сжатия LiteDBExplorer могут возникнуть некоторые проблемы. Это работает не всегда, но LiteDBshell работает. Пожалуйста, используйте «db.shrink» в оболочке.

Я предполагаю, что сообщения типа «Недопустимый формат: коллекция» в оболочке можно исправить, изменив имя коллекции.