Gramps-Web Synology Schema Upgrade?

Hello, I’m desperate. I’ve installed the latest version on my Synology’s Docker. Everything’s running smoothly. Now, when I try to create a person, I get a message saying the schema needs to be upgraded. The process failed. I found instructions for this. The data needs to be backed up. After the import, a message appears stating that the database is incompatible; an update can be performed here. This message doesn’t appear in my installation. Was I wrong? It’s a fresh installation. Why isn’t the schema version compatible? What should I do? Thank you for your help.

Hi! It sounds like something is corrupted in your installation. But we will need more details to help you. Can you share logs? Version info? Compose file?

Ich habe eine DS218+ mit 12 GB RAM. Ich habe die Anleitung von https://mariushosting.com/?s=gramps genutzt. Es wurden die Ordner angelegt. Im Portainer habe ich folgendes eingefügt:

Dienstleistungen:

Grampsweb:

Bild: Package grampsweb · GitHub

Containername: Gramps-Web

Gesundheitscheck:

Test: Timeout 10s bash -c ‘:> /dev/tcp/127.0.0.1/5000’ || Ausgang 1

Intervall: 10 s

Timeout: 5 s

Wiederholungen: 3

Startzeitraum: 90 s

Sicherheitsoption:

  • keine neuen Berechtigungen: wahr

Häfen:

  - 5449:5000

Umgebung:

GRAMPSWEB_TREE: Mariushosting #Diese Umgebungsvariable erstellt einen Baum, falls nicht vorhanden.

Bände:

  • /volume1/docker/grampsweb/dbuser:/app/users:rw

  • /volume1/docker/grampsweb/indexdir:/app/indexdir:rw

  • /volume1/docker/grampsweb/thumbnail:/app/thumbnail_cache:rw

  • /volume1/docker/grampsweb/cache:/app/cache:rw

  • /volume1/docker/grampsweb/secret:/app/secret:rw

  • /volume1/docker/grampsweb/database:/root/.gramps/grampsdb:rw

  • /volume1/docker/grampsweb/media:/app/media:rw

  • /volume1/docker/grampsweb/tmp:/tmp:rw

Neustart: bei Fehler:5

Der Container wird erstellt. Die Daten werden in die Ordner geschrieben. Die Website lässt sich mit dem Port 5449 aufrufen. Ich lege den Administrator an und trage die Daten des Mailserver ein. Nach dem Login sind alle Seiten aufrufbar. Soweit kein Problem.

Wenn ich dann eine Person anlege, einen Ort eingebe … erhalte ich unten links die Fehlermeldung: Fehler: Die Gramps Datenbank benötigt ein Schema Update.

Die Datenbank lässt sich nicht schreiben.

Dinge die ich versucht hatte:

Mehrmalige Neuinstallation mit der Version neusten Version sowie alten Versionen.

Bei den latest und latest-devel Versionen erhalte ich den Fehler Schema Upgrade.

Die 25.4.1 funktioniert. Die 25.9.0 hat den Fehler Datenbank geschlossen.

Zu guter letzt habe ich es auf einer anderen DSM im Docker getestet. Auch hier die gleichen Fehler.

. Eigentlich sollten doch bei einer neuen Installation die Daten zusammen passen und es kein Upgrade erforderlich machen? . Sry das ich in deutsch schreibe

Gramps 6.0.5
Gramps Web API 3.4.0
Gramps Web Frontend 25.10.1
Gramps QL 0.4.0
Sifts 1.0.0
locale: en
multi-tree: false
task queue: false
OCR: true
chat: false

: Protokoll: Portainer

( Haupt- .py:8): Gtk-KRITISCH **: 20:36:07.005: gtk_icon_theme_get_for_screen: Assertion „GDK_IS_SCREEN (Bildschirm)“ fehlgeschlagen
INFO
INFO
INFO
[2025-10-28 20:37:05 +0000] [101] [INFO] Starting gunicorn 23.0.0
[2025-10-28 20:37:05 +0000] [101] [INFO] Listening at: http://0.0.0.0:5000 (101)
[2025-10-28 20:37:05 +0000] [101] [INFO] Using worker: sync
[2025-10-28 20:37:05 +0000] [111] [INFO] Booting worker with pid: 111
[2025-10-28 20:37:05 +0000] [112] [INFO] Booting worker with pid: 112
[2025-10-28 20:37:05 +0000] [113] [INFO] Booting worker with pid: 113
[2025-10-28 20:37:05 +0000] [114] [INFO] Booting worker with pid: 114
[2025-10-28 20:37:05 +0000] [115] [INFO] Booting worker with pid: 115
[2025-10-28 20:37:05 +0000] [116] [INFO] Booting worker with pid: 116
[2025-10-28 20:37:05 +0000] [117] [INFO] Booting worker with pid: 117
[2025-10-28 20:37:05 +0000] [118] [INFO] Booting worker with pid: 118
(gunicorn:113): Gtk-KRITISCH **: 20:40:40.559: gtk_icon_theme_get_for_screen: Assertion „GDK_IS_SCREEN (Bildschirm)“ fehlgeschlagen
(gunicorn:115): Gtk-KRITISCH **: 20:40:40.595: gtk_icon_theme_get_for_screen: Behauptung „GDK_IS_SCREEN (Bildschirm)“ fehlgeschlagen
(gunicorn:116): Gtk-KRITISCH **: 20:40:40.853: gtk_icon_theme_get_for_screen: Assertion „GDK_IS_SCREEN (Bildschirm)“ fehlgeschlagen
(gunicorn:114): Gtk-KRITISCH **: 20:40:40.860: gtk_icon_theme_get_for_screen: Assertion „GDK_IS_SCREEN (Bildschirm)“ Fehlgeschlagen
(gunicorn:112): Gtk-KRITISCH **: 20:40:40.880: gtk_icon_theme_get_for_screen: Behauptung „GDK_IS_SCREEN (Bildschirm)“ fehlgeschlagen
(gunicorn:111): Gtk-KRITISCH **: 20:40:40.979: gtk_icon_theme_get_for_screen: Assertion „GDK_IS_SCREEN (Bildschirm)“ fehlgeschlagen
(gunicorn:118): Gtk-KRITISCH **: 20:40:41.194: gtk_icon_theme_get_for_screen: Assertion „GDK_IS_SCREEN (Bildschirm)“ fehlgeschlagen
(gunicorn:117): Gtk-CRITICAL **: 20:40:41.241: gtk_icon_theme_get_for_screen: Behauptung „GDK_IS_SCREEN (Bildschirm)“ fehlgeschlagen
/usr/local/lib/python3.11/dist-packages/flask_limiter/_extension.py:364: UserWarning: Verwendung des In-Memory-Speichers zur Verfolgung von Ratenbegrenzungen, da kein Speicher explizit angegeben wurde. Dies wird für den produktiven Einsatz nicht empfohlen. Siehe: https://flask-limiter.readthedocs.io#configuring-a-storage-backend für Dokumentation zur Konfiguration des Speicher-Backends.
warnings.warn(
/usr/local/lib/python3.11/dist-packages/flask_limiter/_extension.py:364: UserWarning: Verwendung des In-Memory-Speichers zur Verfolgung von Ratenbegrenzungen, da kein Speicher explizit angegeben wurde. Dies wird für den produktiven Einsatz nicht empfohlen. Siehe: https://flask-limiter.readthedocs.io#configuring-a-storage-backend Dokumentation zur Konfiguration des Speicher-Backends.
warnings.warn(
/usr/local/lib/python3.11/dist-packages/flask_limiter/_extension.py:364: UserWarning: Verwendung des In-Memory-Speichers zur Verfolgung von Ratenbegrenzungen, da kein Speicher explizit angegeben wurde. Dies wird für den produktiven Einsatz nicht empfohlen. Siehe: https://flask-limiter.readthedocs.io#configuring-a-storage-backend für Dokumentation zur Konfiguration des Speicher-Backends.
warnings.warn(
/usr/local/lib/python3.11/dist-packages/flask_limiter/_extension.py:364: UserWarning: Verwendung des In-Memory-Speichers zur Verfolgung von Ratenbegrenzungen als Es wurde kein Speicher explizit angegeben. Dies wird für den produktiven Einsatz nicht empfohlen. Siehe: https://flask-limiter.readthedocs.io#configuring-a-storage-backend Dokumentation zur Konfiguration des Speicher-Backends.
warnings.warn(
/usr/local/lib/python3.11/dist-packages/flask_limiter/_extension.py:364: UserWarning: Verwendung des In-Memory-Speichers zur Verfolgung von Ratenbegrenzungen, da kein Speicher explizit angegeben wurde. Dies wird für den produktiven Einsatz nicht empfohlen. Siehe: https://flask-limiter.readthedocs.io#configuring-a-storage-backend Dokumentation zur Konfiguration des Speichers. Backend.
warnings.warn(
/usr/local/lib/python3.11/dist-packages/flask_limiter/_extension.py:364: UserWarning: Verwendung des In-Memory-Speichers zur Verfolgung von Ratenbegrenzungen, da kein Speicher explizit angegeben wurde. Dies wird für den produktiven Einsatz nicht empfohlen. Siehe: https://flask-limiter.readthedocs.io#configuring-a-storage-backend für Dokumentation zur Konfiguration des Speicher-Backends.
warnings.warn(
/usr/local/lib/python3.11/dist-packages/flask_limiter/_extension.py:364: UserWarning: Verwendung des In-Memory-Speichers für Verfolgung von Ratenbegrenzungen, da kein Speicher explizit angegeben wurde. Dies wird für den Produktionseinsatz nicht empfohlen. Siehe: https://flask-limiter.readthedocs.io#configuring-a-storage-backend Dokumentation zur Konfiguration des Speicher-Backends.
warnings.warn(
/usr/local/lib/python3.11/dist-packages/flask_limiter/_extension.py:364: UserWarning: Verwendung des In-Memory-Speichers zur Verfolgung von Ratenbegrenzungen, da kein Speicher explizit angegeben wurde. Dies wird für den Produktionseinsatz nicht empfohlen. Siehe: https://flask-limiter.readthedocs.io#configuring-a-storage-backend Dokumentation zur Konfiguration des Speichers. Backend.
warnings.warn(




{
“AppArmorProfile”: “docker-default”,
“Args”:
“/bin/sh”,
“-c”,
“gunicorn -w ${GUNICORN_NUM_WORKERS:-8} -b 0.0.0.0:5000 gramps_webapi.wsgi:app --timeout ${GUNICORN_TIMEOUT:-120} --limit-request-line 8190”
],
“Config”: {
“AttachStderr”: true,
“AttachStdin”: false,
“AttachStdout”: true,
“Cmd”:
“/bin/sh”,
“-c”,
“gunicorn -w ${GUNICORN_NUM_WORKERS:-8} -b 0.0.0.0:5000 gramps_webapi.wsgi:app --timeout ${GUNICORN_TIMEOUT:-120} --limit-request-line 8190”
],
“Domainname”: “”,
“Entrypoint”:
“/docker-entrypoint.sh”
],
“Env”:
“GRAMPSWEB_TREE=Stammbaum”,
“PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”,
“DEBIAN_FRONTEND=noninteractive”,
“GRAMPS_VERSION=60”,
“PYTHONPATH=:/usr/lib/python3/dist-packages”,
“LANGUAGE=en_US.utf8”,
“LANG=en_US.utf8”,
“LC_ALL=en_US.utf8”,
“GRAMPS_API_CONFIG=/app/config/config.cfg”,
“OMP_NUM_THREADS=1”,
“GRAMPSWEB_USER_DB_URI=sqlite:////app/users/users.sqlite”,
“GRAMPSWEB_MEDIA_BASE_DIR=/app/media”,
“GRAMPSWEB_SEARCH_INDEX_DB_URI=sqlite:////app/indexdir/search_index.db”,
“GRAMPSWEB_STATIC_PATH=/app/static”,
“GRAMPSWEB_THUMBNAIL_CACHE_CONFIG__CACHE_DIR=/app/thumbnail_cache”,
“GRAMPSWEB_REQUEST_CACHE_CONFIG__CACHE_DIR=/app/cache/request_cache”,
“GRAMPSWEB_PERSISTENT_CACHE_CONFIG__CACHE_DIR=/app/cache/persistent_cache”,
“GRAMPSWEB_REPORT_DIR=/app/cache/reports”,
“GRAMPSWEB_EXPORT_DIR=/app/cache/export”,
“GRAMPSHOME=/root”,
“GRAMPS_DATABASE_PATH=/root/.gramps/grampsdb”
],
“ExposedPorts”: {
“5000/tcp”: {}
},
“Healthcheck”: {
“Interval”: 10000000000,
“Retries”: 3,
“StartPeriod”: 90000000000,
“Test”: [
“CMD-SHELL”,
“timeout 10s bash -c ‘:> /dev/tcp/127.0.0.1/5000’ || exit 1”
],
“Timeout”: 5000000000
},
“Hostname”: “c9d804d33c76”,
“Image”: “ghcr.io/gramps-project/grampsweb:latest-devel”,
“Labels”: {
“com.docker.compose.config-hash”: “4031a55cefa2be8d92fa951938be89dd98405a2d64b46273eeddf40aae6525e9”,
“com.docker.compose.container-number”: “1”,
“com.docker.compose.depends_on”: “”,
“com.docker.compose.image”: “sha256:3e63c792b737904020184ae1fac18e42f6410b9efff135319ea5fc1ced23f004”,
“com.docker.compose.oneoff”: “False”,
“com.docker.compose.project”: “stammbaum”,
“com.docker.compose.project.config_files”: “/data/compose/77/docker-compose.yml”,
“com.docker.compose.project.working_dir”: “/data/compose/77”,
“com.docker.compose.service”: “grampsweb”,
“com.docker.compose.version”: “”,
“org.opencontainers.image.source”: “https://github.com/gramps-project/gramps-web”
},
„OnBuild“: null,
„OpenStdin“: false,
„StdinOnce“: false,
„Tty“: false,
„Benutzer“: „“,
„Volumes“: null,
„WorkingDir“: „/app“
},
„Erstellt“: „2025-10-28T20:34:08.652813351Z“,
„Treiber“: „btrfs“,
„ExecIDs“:
„71006f60909a2e77be5057d62f24070fdb72fe1905bfbd647fd1cf38066101ed“,
„a0d285f6b09a956aa161753c4103dacc575ab9d9216d1d3b59b91cd92bde9a58“
],
„GraphDriver“: {
„Daten“: null,
„Name“: „btrfs“
},
„HostConfig“: {
„AutoRemove“: falsch,
„Bindungen“:
„/volume1/docker/grampsweb/database:/root/.gramps/grampsdb:rw“,
„/volume1/docker/grampsweb/media:/app/media:rw“,
„/volume1/docker/grampsweb/tmp:/tmp:rw“,
„/volume1/docker/grampsweb/dbuser:/app/users:rw“,
“/volume1/docker/grampsweb/indexdir:/app/indexdir:rw”,
„/volume1/docker/grampsweb/thumbnail:/app/thumbnail_cache:rw“,
„/volume1/docker/grampsweb/cache:/app/cache:rw“,
„/volume1/docker/grampsweb/secret:/app/secret:rw“
],
„BlkioDeviceReadBps“: null,
„BlkioDeviceReadIOps“: null,
„BlkioDeviceWriteBps“: null,
„BlkioDeviceWriteIOps“: null,
„BlkioWeight“: 0,
„BlkioWeightDevice“: null,
„CapAdd“: null,
„CapDrop“: null,
„Cgroup“: „“,
„CgroupParent“: „“,
„CgroupnsMode“: „Host“,
„Konsolengröße“:
0,
0
],
„Container-ID-Datei“: „“,
„CpuCount“: 0,
„CpuPercent“: 0,
„CpuPeriod“: 0,
„CpuQuota“: 0,
„CpuRealtimePeriod“: 0,
„CpuRealtimeRuntime“: 0,
„CpuShares“: 0,
„CpusetCpus“: „“,
„CpusetMems“: „“,
„Gerätegruppenregeln“: null,
„Geräteanfragen“: null,
„Geräte“: null,
„DNS“: null,
„DNS-Optionen“: null,
„DNS-Suche“: null,
„ExtraHosts“: ,
„Gruppenzusatz“: null,
„IO-MaximaleBandbreite“: 0,
„IO-MaximaleIOps“: 0,
„IpcMode“: „privat“,
„Isolation“: „“,
„Links“: null,
„LogConfig“: {
„Config“: {},
„Typ“: „db“
},
„MaskiertePfade“:
„/proc/asound“,
„/proc/acpi“,
„/proc/kcore“,
„/proc/keys“,
„/proc/latency_stats“,
„/proc/timer_list“,
„/proc/timer_stats“,
„/proc/sched_debug“,
„/proc/scsi“,
„/sys/firmware“
],
„Speicher“: 0,
„Speicherreservierung“: 0,
„Speicherauslagerung“: 0,
„Speicherauslagerung“: null,
„NanoCpus“: 0,
„Netzwerkmodus“: „stammbaum_default“,
„OomKillDisable“: false,
„OomScoreAdj“: 0,
„PidMode“: „“,
„PidsLimit“: null,
„PortBindings“: {
„5000/tcp“:
{
„HostIp“: „“,
„HostPort“: „5449“
}
]
},
„Privilegiert“: falsch,
„AllePorts veröffentlichen“: falsch,
„Nur-Lese-Pfade“:
„/proc/bus“,
„/proc/fs“,
„/proc/irq“,
„/proc/sys“,
„/proc/sysrq-trigger“
],
„Nur-Lese-Rootfs“: falsch,
„Neustartrichtlinie“: {
„Maximale Anzahl der Wiederholungen“: 5,
„Name“: „bei Fehler“
},
„Laufzeit“: „runc“,
„Sicherheitsoption“:
„keine neuen Berechtigungen:true“
],
„ShmSize“: 67108864,
„UTSMode“: „“,
„Ulimits“: null,
„UsernsMode“: „“,
„VolumeDriver“: „“,
„VolumesFrom“: null
},
„HostnamePath“: „/volume1/@docker/containers/c9d804d33c76ee6bb70d35493e1e85cf471539ae19fe8c08602de2d32b2ec7ec/hostname“,
„HostsPfad“: „/volume1/@docker/containers/c9d804d33c76ee6bb70d35493e1e85cf471539ae19fe8c08602de2d32b2ec7ec/hosts“,
„ID“: „c9d804d33c76ee6bb70d35493e1e85cf471539ae19fe8c08602de2d32b2ec7ec“,
„Bild“: „sha256:3e63c792b737904020184ae1fac18e42f6410b9efff135319ea5fc1ced23f004“,
„Logpfad“: „/volume1/@docker/containers/c9d804d33c76ee6bb70d35493e1e85cf471539ae19fe8c08602de2d32b2ec7ec/log.db“,
„MountLabel“: „“,
„Mounts“:
{
„Ziel“: „/app/indexdir“,
„Modus“: „rw“,
„Verbreitung“: „rprivate“,
„RW“: true,
„Quelle“: „/volume1/docker/grampsweb/indexdir“,
„Typ“: „bind“
},
{
„Ziel“: „/app/thumbnail_cache“,
„Modus“: „rw“,
„Verbreitung“: „rprivate“,
„RW“: true,
„Quelle“: „/volume1/docker/grampsweb/thumbnail“,
„Typ“: „bind“
},
{
„Ziel“: „/app/cache“,
„Modus“: „rw“,
„Verbreitung“: „rprivate“,
„RW“: true,
„Quelle“: „/volume1/docker/grampsweb/cache“,
„Typ“: „bind“
},
{
„Ziel“: „/app/secret“,
„Modus“: „rw“,
„Propagation“: „rprivate“,
„RW“: true,
„Quelle“: „/volume1/docker/grampsweb/secret“,
„Typ“: „bind“
},
{
„Ziel“: „/root/.gramps/grampsdb“,
„Modus“: „rw“,
„Verbreitung“: „rprivate“,
„RW“: true,
„Quelle“: „/volume1/docker/grampsweb/database“,
„Typ“: „bind“
},
{
„Ziel“: „/app/media“,
„Modus“: „rw“,
„Verbreitung“: „rprivate“,
„RW“: true,
„Quelle“: „/volume1/docker/grampsweb/media“,
„Typ“: „bind“
},
{
„Ziel“: „/tmp“,
„Modus“: „rw“,
„Verbreitung“: „rprivate“,
„RW“: true,
„Quelle“: „/volume1/docker/grampsweb/tmp“,
„Typ“: „bind“
},
{
„Ziel“: „/app/users“,
„Modus“: „rw“,
„Verbreitung“: „rprivate“,
„RW“: true,
„Quelle“: „/volume1/docker/grampsweb/dbuser“,
„Typ“: „Binden“
}
],
„Name“: „/grampsweb“,
„Netzwerkeinstellungen“: {
„Bridge“: „“,
„Endpunkt-ID“: „“,
„Gateway“: „“,
„Globale IPv6-Adresse“: „“,
„Globale IPv6-Präfixlänge“: 0,
„Haarnadelmodus“: false,
„IP-Adresse“: „“,
„IPPrefixlänge“: 0,
„IPv6-Gateway“: „“,
„LinkLocalIPv6Address“: „“,
„LinkLocalIPv6PrefixLen“: 0,
„MacAddress“: „“,
„Networks“: {
„stammbaum_default“: {
„Aliases“:
„grampsweb“,
„grampsweb“,
„c9d804d33c76“
],
„DriverOpts“: null,
„EndpointID“: „f89124f3cb6c9a93cc074f3d4c158d0fbf94656d2e4acc7e2f4bb38e2bd74e64“,
„Gateway“: „172.28.0.1“,
„GlobalIPv6Address“: „“,
„GlobalIPv6PrefixLen“: 0,
„IPAMConfig“: null,
„IPAdresse“: „172.28.0.2“,
„IPPrefixLen“: 16,
„IPv6Gateway“: „“,
„Links“: null,
„Mac-Adresse“: „02:42:ac:1c:00:02“,
„Netzwerk-ID“: „a6f6b52cb8dc8f091bf5795154aecaee10efa3b3cecaf51e8a5a827742ccfdc3“
}
},
„Ports“: {
„5000/tcp“:
{
„Host-IP“: „0.0.0.0“,
„HostPort“: „5449“
},
{
„HostIP“: „::“,
„HostPort“: „5449“
}
]
},
„Sandbox-ID“: „94b9bebf26ff5d020bd46a47300833fbb8be20235444e43df45e4e526cfad782“,
„Sandbox-Schlüssel“: „/var/run/docker/netns/94b9bebf26ff“,
„Sekundäre IP-Adressen“: null,
„Sekundäre IPv6-Adressen“: null
},
„Pfad“: „/docker-entrypoint.sh“,
„Plattform“: „linux“,
„Potainer“: {
„Ressourcensteuerung“: {
„ID“: 49,
„Ressourcen-ID“: „2_stammbaum“,
„Subressourcen-IDs“: ,
„Typ“: 6,
„Benutzerzugriffe“: ,
„Teamzugriffe“: ,
„Öffentlich“: false,
„Nur Administratoren“: wahr,
„System“: falsch
}
},
„Prozessbezeichnung“: „“,
„ResolvConfPath“: „/volume1/@docker/containers/c9d804d33c76ee6bb70d35493e1e85cf471539ae19fe8c08602de2d32b2ec7ec/resolv.conf“,
„Anzahl Neustarts“: 0,
„Status“: {
„Tot“: falsch,
„Fehler“: „“,
„ExitCode“: 0,
„Fertig am“: „0001-01-01T00:00:00Z“,
„Gesundheit“: {
„Fehlerserie“: 0,
„Protokoll“:
{
„Ende“: „2025-10-29T00:14:44.029319375+01:00“,
„ExitCode“: 0,
„Ausgabe“: „“,
„Start“: „2025-10-29T00:14:43.980971759+01:00“
},
{
„Ende“: „2025-10-29T00:14:54.301044695+01:00“,
„ExitCode“: 0,
„Ausgabe“: „“,
„Start“: „2025-10-29T00:14:54.248245553+01:00“
},
{
„Ende“: „2025-10-29T00:15:04.500367394+01:00“,
„ExitCode“: 0,
„Ausgabe“: „“,
„Start“: „2025-10-29T00:15:04.435693338+01:00“
},
{
„Ende“: „2025-10-29T00:15:15.443969285+01:00“,
„ExitCode“: 0,
„Ausgabe“: „“,
„Start“: „2025-10-29T00:15:15.383737971+01:00“
},
{
„Ende“: „2025-10-29T00:15:25.682538757+01:00“,
„ExitCode“: 0,
„Ausgabe“: „“,
„Start“: „2025-10-29T00:15:25.632169161+01:00“
}
],
„Status“: „In Ordnung“
},
„OOMKilled“: falsch,
„Pausiert“: falsch,
„Pid“: 25004,
„Neustart“: falsch,
„Läuft“: wahr,
„Gestartet um“: „28.10.2025, 20:34:25.541467315Z“,
„Status“: „Läuft“
}
}

Danke, gut wäre noch ein Log während der Fehler auftritt (z.B. Hinzufügen einer Person)

Im Docker-Logfile steht nichts. Die Fehlermeldung kommt nur auf der Website links unten beim Versuch etwas hinzuzufügen. Und unter Verwaltung/Prüfen und Reparieren: 500 Internal Server Error. Die Gramps-Datenbank benötigt ein Schema-Upgrade. Komischerweise kann ich eine Datenbanksicherung von der Mac Desktopversion importieren. Dann schreibt er in die Datenbank. Nur das Zufügen von Personen, Orten etc. schlägt fehl.

Die gefühlte zwanzigste Docker install. :frowning: Die Datenbank wird immer gesperrt. So wird es nicht funktionieren.

sqlite3.OperationalError: Datenbank ist gesperrt

500 Internal server error und kein Fehler im Log ist schlicht unmöglich, sorry.

Da steht nichts. Fehlermeldung, Nichts im Log. Wo muss ich suchen?

File “/usr/local/lib/python3.11/dist-packages/gunicorn/workers/sync.py”, line 177, in handle_request
respiter = self.wsgi(environ, resp.start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 1536, in call
return self.wsgi_app(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 1527, in wsgi_app
ctx.pop(error)
File “/usr/local/lib/python3.11/dist-packages/flask/ctx.py”, line 426, in pop
app_ctx.pop(exc)
File “/usr/local/lib/python3.11/dist-packages/flask/ctx.py”, line 262, in pop
self.app.do_teardown_appcontext(exc)
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 1382, in do_teardown_appcontext
self.ensure_sync(func)(exc)
File “/usr/local/lib/python3.11/dist-packages/gramps_webapi/app.py”, line 183, in close_db_connection
close_db(db_write)
File “/usr/local/lib/python3.11/dist-packages/gramps_webapi/api/util.py”, line 424, in close_db
db_handle.close()
File “/usr/local/lib/python3.11/dist-packages/gramps/gen/db/generic.py”, line 757, in close
self._set_metadata(“name_formats”, self.name_formats)
File “/usr/local/lib/python3.11/dist-packages/gramps/plugins/db/dbapi/dbapi.py”, line 380, in _set_metadata
self.dbapi.execute(
File “/usr/local/lib/python3.11/dist-packages/gramps/plugins/db/dbapi/sqlite.py”, line 136, in execute
self.__cursor.execute(*args, **kwargs)
sqlite3.OperationalError: database is locked
[2025-10-29 20:24:20 +0000] [38] [ERROR] Error handling request /api/objects/
Traceback (most recent call last):
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 1514, in wsgi_app
response = self.handle_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 1511, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 919, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 917, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 902, in dispatch_request
return self.ensure_sync(self.view_functions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/gramps_webapi/api/auth.py”, line 44, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/flask/views.py”, line 110, in view
return current_app.ensure_sync(self.dispatch_request)(**kwargs) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/flask/views.py”, line 191, in dispatch_request
return current_app.ensure_sync(meth)(**kwargs) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/gramps_webapi/api/resources/objects.py”, line 93, in post
add_object(db_handle, obj, trans, fail_if_exists=True)
File “/usr/local/lib/python3.11/dist-packages/gramps_webapi/api/resources/util.py”, line 880, in add_object
return add_method(obj, trans)
^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/gramps/gen/db/generic.py”, line 1817, in add_person
return self._add_base(
^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/gramps/gen/db/generic.py”, line 1813, in _add_base
commit_func(obj, trans)
File “/usr/local/lib/python3.11/dist-packages/gramps/gen/db/generic.py”, line 1893, in commit_person
old_data = self._commit_base(person, PERSON_KEY, trans, change_time)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/gramps/plugins/db/dbapi/dbapi.py”, line 661, in _commit_base
self.dbapi.execute(sql,
File “/usr/local/lib/python3.11/dist-packages/gramps/plugins/db/dbapi/sqlite.py”, line 136, in execute
self.__cursor.execute(*args, **kwargs)
sqlite3.OperationalError: database is locked
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “/usr/local/lib/python3.11/dist-packages/gunicorn/workers/sync.py”, line 134, in handle
self.handle_request(listener, req, client, addr)
File “/usr/local/lib/python3.11/dist-packages/gunicorn/workers/sync.py”, line 177, in handle_request
respiter = self.wsgi(environ, resp.start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 1536, in call
return self.wsgi_app(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 1527, in wsgi_app
ctx.pop(error)
File “/usr/local/lib/python3.11/dist-packages/flask/ctx.py”, line 426, in pop
app_ctx.pop(exc)
File “/usr/local/lib/python3.11/dist-packages/flask/ctx.py”, line 262, in pop
self.app.do_teardown_appcontext(exc)
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 1382, in do_teardown_appcontext
self.ensure_sync(func)(exc)
File “/usr/local/lib/python3.11/dist-packages/gramps_webapi/app.py”, line 183, in close_db_connection
close_db(db_write)
File “/usr/local/lib/python3.11/dist-packages/gramps_webapi/api/util.py”, line 424, in close_db
db_handle.close()
File “/usr/local/lib/python3.11/dist-packages/gramps/gen/db/generic.py”, line 757, in close
self._set_metadata(“name_formats”, self.name_formats)
File “/usr/local/lib/python3.11/dist-packages/gramps/plugins/db/dbapi/dbapi.py”, line 380, in _set_metadata
self.dbapi.execute(
File “/usr/local/lib/python3.11/dist-packages/gramps/plugins/db/dbapi/sqlite.py”, line 136, in execute
self.__cursor.execute(*args, **kwargs)
sqlite3.OperationalError: database is locked

Schade das ich keine Hilfe erhielt. Für alle die Lösung.
Gramps im Docker starten. Es zeigt nach der Installation das die Datenbank gesperrt ist.
Auf dem Synology NAS in den Grampsweb Ordner gehen. Dort den Ordner mit der Datenbank öffnen.
Bei mir gab es dort zwei Datenbank Files. Ich habe beide umbenannt.
Dann den Browser mit Gramps aktualisieren. Die Datenbank wird automatisch neu (leer) angelegt.

Ich konnte danach Personen und Orte anlegen, Import und Export funktioniert.

Warum die Datenbank bei der Installation gesperrt wurde? Ich dachte das ich hier eine Erklärung bekomme…