Neuinstallation und Document Import Problem

Hallo @Stefan ,

ich habe meinen Pi neu aufsetzen müssen durch Umstrukturierung im LAN und wollte gleich zwei fliegen mit einer klappe schlagen… HA HA … zu früh gefreut :smiley:

Das Thema gab es schon mal wurde aber nicht wirklich gelöst…
Die Backups importieren hat bisher immer geklappt … hmpf

Neuinstallation mit Postgres16 und die Dokumente zu importieren war doch wohl zu viel.

Paperless das erste mal in 0815 mit Version 13 laufen lassen… ne zweite installation mit 15 angelegt und laufen lassen, die alte gelöscht und versucht die Dokumente zu importieren mit folgendem Resultat.

Ich habe alle Ordner gelöscht im Paperless Ordner nur der Fehler bleibt… also muss diesbezüglich noch wo anders n teil der Datenbank gespeichert sein.
Kann es sein das ich die im Docker Ordner auch noch löschen muss um den Fehler zu beheben ?

sudo docker-compose exec -T web                                       server document_importer ../export
Found existing user(s), this might indicate a non-empty installation
Checking the manifest
Database import failed
No version information present
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/utils.py", li                                       ne 89, in _execute
    return self.cursor.execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint                                        "documents_uisettings_user_id_key"
DETAIL:  Key (user_id)=(3) already exists.


The above exception was the direct cause of the following exception:

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.11/site-packages/django/core/management/__init__.                                       py", line 442, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.11/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.11/site-packages/django/core/management/base.py",                                        line 412, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py",                                        line 458, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/paperless/src/documents/management/commands/document_importer.p                                       y", line 180, in handle
    raise e
  File "/usr/src/paperless/src/documents/management/commands/document_importer.p                                       y", line 161, in handle
    call_command("loaddata", manifest_path)
  File "/usr/local/lib/python3.11/site-packages/django/core/management/__init__.                                       py", line 194, in call_command
    return command.execute(*args, **defaults)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py",                                        line 458, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/core/management/commands/                                       loaddata.py", line 102, in handle
    self.loaddata(fixture_labels)
  File "/usr/local/lib/python3.11/site-packages/django/core/management/commands/                                       loaddata.py", line 163, in loaddata
    self.load_label(fixture_label)
  File "/usr/local/lib/python3.11/site-packages/django/core/management/commands/                                       loaddata.py", line 253, in load_label
    if self.save_obj(obj):
       ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/core/management/commands/                                       loaddata.py", line 209, in save_obj
    obj.save(using=self.using)
  File "/usr/local/lib/python3.11/site-packages/django/core/serializers/base.py"                                       , line 288, in save
    models.Model.save_base(self.object, using=using, raw=True, **kwargs)
  File "/usr/local/lib/python3.11/site-packages/django/db/models/base.py", line                                        877, in save_base
    updated = self._save_table(
              ^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/models/base.py", line                                        1020, in _save_table
    results = self._do_insert(
              ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/models/base.py", line                                        1061, in _do_insert
    return manager._insert(
           ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/models/manager.py", li                                       ne 87, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line                                        1805, in _insert
    return query.get_compiler(using=using).execute_sql(returning_fields)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/models/sql/compiler.py                                       ", line 1822, in execute_sql
    cursor.execute(sql, params)
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/utils.py", li                                       ne 67, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/utils.py", li                                       ne 80, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/utils.py", li                                       ne 84, in _execute
    with self.db.wrap_database_errors:
  File "/usr/local/lib/python3.11/site-packages/django/db/utils.py", line 91, in                                        __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/utils.py", li                                       ne 89, in _execute
    return self.cursor.execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
django.db.utils.IntegrityError: Problem installing fixture '/usr/src/paperless/e                                       xport/manifest.json': Could not load documents.UiSettings(pk=2): duplicate key v                                       alue violates unique constraint "documents_uisettings_user_id_key"
DETAIL:  Key (user_id)=(3) already exists.

Hallo Michael,
wenn du in der .env einen neuen Namen anlegst, und dann neu installierst, dann solltest du keine Probleme haben das Backup (das export Backup) einzuspielen, da komplett neue Instanzen angelegt werden. Nur die paperless Version muss die gleiche sein.
So kann man auch mehrere parallele Instanzen anlegen.
Siehe auch hier: 2. parallele Installation zu Schulungszwecken auf NAS/Docker - #32 von Verdi-Fan
Gruß
Mario

Guten Morgen,

Ich hab nicht ganz kapiert auf die schnelle wie ich die Instanzen ändern soll oder es wieder vergessen.

Konnte den Export auf dem zweiten Raspberry einspielen auf anhieb mit der 16er Datenbank.
Habe jetzt nochmal Paperless komplett entfernt und mit Docker die volume der Datenbank gelöscht und nochmal docker-clean seine Arbeit verrichten lassen… und nun gehts.

Ich würde nur gerne verstehen wieso sich Docker bis zum „Arschtritt“ geweigert hat ^^.
Auf dem Pi ist das leichter zu beheben, aber auf nem Synology weiß ich nicht da man ja keine Pakete nachinstallieren kann… wird es schwierig.

Die letzte Zeile ist interessant:
„DETAIL: Key (user_id)=(3) already exists.“

Das gleiche Problem hatte ich auch als ich eine Testumgebung erstellt habe und mit meinem Backup gefüllt habe.

Der User aus der Produktiv-Umgebung, darf nicht in der neuen Umgebung existieren. Für die neue Installation ist ein administrativer Dummy-User anzulegen.

Die .env, nicht die docker-compose.env, beinhaltet den Namen der Instanzen. Die .env findest du auch in dem Ordner config. Den Namen änder in z.Bsp. paperless-ngx2. Dann werden alle Container mit neuem Namen angelegt und es kommt nicht zu Überschneidungen, ebenfalls wird in Docker ein weiteres Netzwerk aktiviert. Dann brauche ich nur, wie gehabt, paperless installieren, aber ohne createuser, da der ja bereits im export-backup enthalten ist. Backup einspielen und fertig.
Habe ich bestimmt während meiner Testphase 20-30x so gemacht und das klappt. Wichtig ist aber, in der .env immer einen neuen Namen zu vergeben.
Alternativ oder auch ergänzend kann man auch alle zur verwerfenden Instanz gehörenden Container in Docker stoppen und löschen.
Wichtig ist nur, einen neuen Namen in der .env zu hinterlegen, und dass die Paperlessversion die gleiche ist. So lässt sich bin Minuten auch ein upgrade der db realisieren. Und natürlich auch weitere Instanzen anlegen, privat + firma + betrieb z.Bsp.

Die Zeile ist irrelevant und der Import klappt trotzdem @florian1308
Es ging um den Rest :slight_smile:

@Modiso
Das mit dem SuperUser anlegen war reiner Automatismus ^^
Wo die Configs liegen weiß ich doch :slight_smile: und die Ordnernamen waren *_15 + *_16 … Lediglich die Ports um drauf zugreifen zu können wurden geändert und die DB Version.

Ein Workaround wäre jetzt auch vermutlich gewesen die laufende instanz vom anderen Gerät zu kopieren… Das wär mir aber zu einfach gewesen :grin:

Ach die ENV… An die hab ich nicht gedacht :see_no_evil:

Nach dem Arschtritt lief es auf dem anderen PI auch wieder.
Werde mir auf dem DockerPi mal ne zweite instanz anlegen und die andere zu backupzwecken weiter verwenden.

Dieses Thema wurde automatisch 2 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.