Paperless Postgres 13 zu Postgres 17 / import schlägt fehl

Hallo liebe Community,

ich habe heute gemäß der Anleitung unter Datenbank von paperless-ngx - So gelingt das Update (z.B. Postgres 13 — Digitalisierung mit Kopf versucht meine paperless.ngx Installation updaten.

sudo docker-compose exec webserver document_importer ../export
System check identified some issues:

WARNINGS:
?: DEBUG mode is enabled. Disable Debug mode. This is a serious security issue, since it puts security overrides in place which are meant to be only used during development. This also means that paperless will tell anyone various debugging information when something goes wrong.
Checking the manifest
Installed 43948 object(s) from 1 fixture(s)
Copy files into paperless...
 83%|████████████████████████████████████████████████████████████████▎            | 1982/2375 [13:55<02:45,  2.37it/s]
Traceback (most recent call last):
  File "/usr/src/paperless/src/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.12/site-packages/django/core/management/__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", line 413, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", line 459, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/paperless/src/documents/management/commands/document_importer.py", line 283, in handle
    self._import_files_from_manifest()
  File "/usr/src/paperless/src/documents/management/commands/document_importer.py", line 378, in _import_files_from_manifest
    raise FileExistsError(document.source_path)
FileExistsError: /usr/src/paperless/media/documents/originals/allgemein/xxx.eml

Ich habe die Ordner pgdata, data und media komplett gelöscht und neu leer angelegt.

Die Datei, die er als FileExistsError benennt, gibt es im Export ordner nur einmal.

Als ich die Datei manuell gelöscht habe, hat er gesagt, dass die manifest datei nicht mehr stimmt. Diese kann ich aber nicht öffnen und anpassen, weil sie so riesig ist :frowning: 1982 Importe hat er ja problemlos gemacht. Bin echt ratlos.

Die Installation habe ich gemäß Masterclass installiert.

Meine Volumes:

DRIVER    VOLUME NAME
local     7c5ae12bd3d80a8a06adac258e89627db8835eaf8f6f440d0163a2b22111cdd3
local     3158ca7cf72992f56d29223ab659aef739bef38fbee7d45a9d2620d9a89a48f9
local     3676b81e8a737e790dda1ae1122916e95c2e16c5be17d6a31fe3260d09fbc734
local     86171b06a2c8caf42e8b5824c0bcd71a86eca45316089cab5464dbcfffd1704b
local     config_redisdata
local     eb43a214e6cd6fcaf1ac0f994cb3c88e032b0cc421970c51cb5005796e511cb3
local     nginx_proxy_manager
local     paperless-ngx_redisdata
local     paperless_redisdata
local     wiki_db-data

Übrigens - Export lief 100% problemlos. Habe sogar vorher noch einen senety check gemacht und auch der passte.

Hallo Sebastian,

ich gehe davon aus, dass Du bereits im Vorfeld ein Backup (so wie von @Stefan in der Masterclass erklärt) erstellt hast.

Des Weiteren kann ich Dein Problem nachvollziehen - das ist ein klassischer Konflikt beim Import, der leider öfter auftritt. Der FileExistsError entsteht, weil der Importer versucht, eine Datei zu kopieren, die bereits existiert, auch wenn du die Ordner komplett geleert hast.

Das Problem:
Der Importer hat bereits 1982 von 2375 Dateien erfolgreich kopiert, aber bei der Datei xxx.eml gibt es einen Konflikt. Auch wenn die Datei im Export-Ordner nur einmal existiert, könnte sie durch einen evtl. unterbrochenen Import bereits im Zielordner liegen.

Lösungsansatz: (ACHTUNG! Es ist ein Lösungsansatz und erfolgt in Deiner Verantwortung, daher nochmal - > nur durchführen wenn ausreichende Sicherungen vorliegen, sodass der Urzustand hergestellt werden kann.)

  1. Zunächst prüfen, ob die Datei tatsächlich existiert:
sudo docker-compose exec webserver ls -la /usr/src/paperless/media/documents/originals/allgemein/
  1. Falls die Datei existiert, komplett neu starten:
# Container stoppen
sudo docker-compose down

# Alle Paperless-Volumes löschen (Achtung: Datenverlust!)
docker volume rm paperless-ngx_redisdata
docker volume rm paperless_redisdata
# Weitere Paperless-Volumes falls vorhanden

# Datenordner komplett löschen
sudo rm -rf ./data ./media ./pgdata

# Ordner neu anlegen
mkdir -p data media pgdata

# Container neu starten
sudo docker-compose up -d

# Warten bis alles hochgefahren ist, dann Import erneut
sudo docker-compose exec webserver document_importer ../export
  1. Alternative: Überspringe die problematische Datei temporär
    Du könntest die xxx.eml aus dem Export-Ordner temporär entfernen, den Import durchführen und sie danach manuell über die Web-UI hochladen.

Viele Grüße

1 „Gefällt mir“

Die Datei wird nicht mehr existieren im Export.
Es ist auch möglich das Problem in der JSON die mit exportiert wird zu lösen durch korrigieren der entsprechenden Einträge.
Meine 82 MB JSON lässt sich mit Notepad++ editieren bei ca 2600 Dokumenten.

Bevor man ohne Kenntnisse Dateien editiert sollte man doch erst mal das Backup wiederherstellen und den Export erneut durchführen.
Nur um sicher zu gehen dass mit dem Export alles ok ist bevor man ihn in die Leere Ordner zurück importiert.

Hallo @Ruedigger ,
super vielen Dank für die Lösung.
Ich bin beim Datenbankupdate auch an dem Fehler „Database import failed
No version information present“ fast verzweifelt - damit konnte ich es lösen und das update ist durch.