Как найти файл по идентификатору документа в exist-db? - PullRequest
2 голосов
/ 26 марта 2020

Мы выполняли резервное копирование и проверку согласованности базы данных. В _lost_and_found мы находим один файл и _contents_xml. Этот файл назван для нас "cover. xml"

Очевидно, что он каким-то образом испортился, так как экспорт XML выглядит так (без тегов и текста из что-то еще):

<?xml version="1.0" encoding="UTF-8"?>
Most people do not have any problems and are satisfied ...

Теперь _contents_ xml содержит эту информацию:

<collection xmlns="http://exist.sourceforge.net/NS/exist" name="/db/__lost_and_found__" version="1" owner="admin" group="dba" mode="0771">
    <resource type="XMLResource" name="cover.xml" skip="no" owner="XXXXXXXXX" group="UK_Territory" mode="644" created="2019-11-13T15:09:41.625Z" modified="2019-11-13T15:10:28.282Z" filename="cover.xml" mimetype="application/xml">
        <acl entries="0" version="1"/>
    </resource>
</collection>

Конец журнала сообщает об этом:

  DOCUMENT: 35000 of 35011
  DOCUMENT: 35011 of 35011
----------------------------------------------
RESOURCE_ACCESS_FAILED:
Failed to access document data
Document ID: 31499

Теперь, как нам найти этот документ в / db? Мы спрашиваем, потому что в разных коллекциях содержится более 5000 файлов "cover. xml", и это не говорит нам, в какой коллекции мы можем увидеть поврежденный файл. Есть ли способ узнать это из приведенной выше информации?

1 Ответ

0 голосов
/ 29 марта 2020

Мне не удалось найти что-то OOTB. Я создал суть, которая может работать на вас. По крайней мере, мой быстрый тест вернул путь к документу. Надеюсь, что это сработает и для вас.

https://gist.github.com/line-o/59b615bde0a19fe153152eb89f284ca1

ПРИМЕЧАНИЕ. Мне сообщили, что идентификаторы документов повторно используются в existdb. То есть не исчерпывать идентификаторы документов. После удаления документа из БД следующий созданный может получить тот же идентификатор. Таким образом, документ, возвращенный моим поиском, может со временем измениться.

...