Start von pgadmin4 schlägt fehl

Hallo in die Runde,
ich bin neu in diesem Forum und hoffe, dass ich hier Hilfe finde: Auf meine Rechner ist Opensuse Leap 15.4 mit KDE/qt5-plasma und Postgresql und pgadmin4 installiert. Hier läuft pgadmin4 einwandfrei.
Da ich allerdings noch eine kleine Anwendung unter Knoda brauche, habe ich Opensuse Tumbleweed mit xfce in einer VM installiert. Dort läuft knoda problemlos und auch über die Konsole kann ich mit psql auf den Postgresql-Server und die Datenbanken zugreifen. Nur pgadmin4 will nicht. Wenn ich versuche pgadmin4 in einer Konsole zu starten, erhalten ich folgende Fehlermeldungen:
user@machine:~>pgadmin
2023-10-22 15:39:10,627: ERROR pgadmin: Database migration failed
2023-10-22 15:39:10,631: ERROR pgadmin: Traceback (most recent call last):
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 145, in init
self._dbapi_connection = engine.raw_connection()
^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 3288, in raw_connection
return self.pool.connect()
^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 452, in connect
return _ConnectionFairy._checkout(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 1267, in _checkout
fairy = _ConnectionRecord.checkout(pool)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 716, in checkout
rec = pool._do_get()
^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/impl.py”, line 284, in _do_get
return self._create_connection()
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 393, in _create_connection
return _ConnectionRecord(self)
^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 678, in init
self.__connect()
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 902, in __connect
with util.safe_reraise():
File “/usr/lib64/python3.11/site-packages/sqlalchemy/util/langhelpers.py”, line 146, in exit
raise exc_value.with_traceback(exc_tb)
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 898, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/create.py”, line 637, in connect
return dialect.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/default.py”, line 615, in connect
return self.loaded_dbapi.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sqlite3.OperationalError: unable to open database file

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

Traceback (most recent call last):
File “/usr/lib/python3.11/site-packages/pgadmin4/pgadmin/init.py”, line 390, in upgrade_db
db_upgrade(app)
File “/usr/lib/python3.11/site-packages/pgadmin4/pgadmin/setup/db_upgrade.py”, line 25, in db_upgrade
flask_migrate.upgrade(migration_folder)
File “/usr/lib/python3.11/site-packages/flask_migrate/init.py”, line 111, in wrapped
f(*args, **kwargs)
File “/usr/lib/python3.11/site-packages/flask_migrate/init.py”, line 200, in upgrade
command.upgrade(config, revision, sql=sql, tag=tag)
File “/usr/lib/python3.11/site-packages/alembic/command.py”, line 399, in upgrade
script.run_env()
File “/usr/lib/python3.11/site-packages/alembic/script/base.py”, line 578, in run_env
util.load_python_file(self.dir, “env.py”)
File “/usr/lib/python3.11/site-packages/alembic/util/pyfiles.py”, line 93, in load_python_file
module = load_module_py(module_id, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/site-packages/alembic/util/pyfiles.py”, line 109, in load_module_py
spec.loader.exec_module(module) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “”, line 940, in exec_module
File “”, line 241, in _call_with_frames_removed
File “/usr/lib/python3.11/site-packages/pgadmin4/pgadmin/setup/…/…/migrations/env.py”, line 95, in
run_migrations_online()
File “/usr/lib/python3.11/site-packages/pgadmin4/pgadmin/setup/…/…/migrations/env.py”, line 79, in run_migrations_online
connection = engine.connect()
^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 3264, in connect
return self._connection_cls(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 147, in init
Connection._handle_dbapi_exception_noconnection(
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 2426, in _handle_dbapi_exception_noconnection
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 145, in init
self._dbapi_connection = engine.raw_connection()
^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 3288, in raw_connection
return self.pool.connect()
^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 452, in connect
return _ConnectionFairy._checkout(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 1267, in _checkout
fairy = _ConnectionRecord.checkout(pool)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 716, in checkout
rec = pool._do_get()
^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/impl.py”, line 284, in _do_get
return self._create_connection()
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 393, in _create_connection
return _ConnectionRecord(self)
^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 678, in init
self.__connect()
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 902, in __connect
with util.safe_reraise():
File “/usr/lib64/python3.11/site-packages/sqlalchemy/util/langhelpers.py”, line 146, in exit
raise exc_value.with_traceback(exc_tb)
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 898, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/create.py”, line 637, in connect
return dialect.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/default.py”, line 615, in connect
return self.loaded_dbapi.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file
(Background on this error at: Error Messages — SQLAlchemy 2.0 Documentation)

Traceback (most recent call last):
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 145, in init
self._dbapi_connection = engine.raw_connection()
^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 3288, in raw_connection
return self.pool.connect()
^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 452, in connect
return _ConnectionFairy._checkout(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 1267, in _checkout
fairy = _ConnectionRecord.checkout(pool)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 716, in checkout
rec = pool._do_get()
^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/impl.py”, line 284, in _do_get
return self._create_connection()
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 393, in _create_connection
return _ConnectionRecord(self)
^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 678, in init
self.__connect()
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 902, in __connect
with util.safe_reraise():
File “/usr/lib64/python3.11/site-packages/sqlalchemy/util/langhelpers.py”, line 146, in exit
raise exc_value.with_traceback(exc_tb)
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 898, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/create.py”, line 637, in connect
return dialect.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/default.py”, line 615, in connect
return self.loaded_dbapi.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sqlite3.OperationalError: unable to open database file

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

Traceback (most recent call last):
File “/usr/lib/python3.11/site-packages/pgadmin4/pgadmin/init.py”, line 390, in upgrade_db
db_upgrade(app)
File “/usr/lib/python3.11/site-packages/pgadmin4/pgadmin/setup/db_upgrade.py”, line 25, in db_upgrade
flask_migrate.upgrade(migration_folder)
File “/usr/lib/python3.11/site-packages/flask_migrate/init.py”, line 111, in wrapped
f(*args, **kwargs)
File “/usr/lib/python3.11/site-packages/flask_migrate/init.py”, line 200, in upgrade
command.upgrade(config, revision, sql=sql, tag=tag)
File “/usr/lib/python3.11/site-packages/alembic/command.py”, line 399, in upgrade
script.run_env()
File “/usr/lib/python3.11/site-packages/alembic/script/base.py”, line 578, in run_env
util.load_python_file(self.dir, “env.py”)
File “/usr/lib/python3.11/site-packages/alembic/util/pyfiles.py”, line 93, in load_python_file
module = load_module_py(module_id, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/site-packages/alembic/util/pyfiles.py”, line 109, in load_module_py
spec.loader.exec_module(module) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “”, line 940, in exec_module
File “”, line 241, in _call_with_frames_removed
File “/usr/lib/python3.11/site-packages/pgadmin4/pgadmin/setup/…/…/migrations/env.py”, line 95, in
run_migrations_online()
File “/usr/lib/python3.11/site-packages/pgadmin4/pgadmin/setup/…/…/migrations/env.py”, line 79, in run_migrations_online
connection = engine.connect()
^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 3264, in connect
return self._connection_cls(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 147, in init
Connection._handle_dbapi_exception_noconnection(
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 2426, in _handle_dbapi_exception_noconnection
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 145, in init
self._dbapi_connection = engine.raw_connection()
^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/base.py”, line 3288, in raw_connection
return self.pool.connect()
^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 452, in connect
return _ConnectionFairy._checkout(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 1267, in _checkout
fairy = _ConnectionRecord.checkout(pool)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 716, in checkout
rec = pool._do_get()
^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/impl.py”, line 284, in _do_get
return self._create_connection()
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 393, in _create_connection
return _ConnectionRecord(self)
^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 678, in init
self.__connect()
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 902, in __connect
with util.safe_reraise():
File “/usr/lib64/python3.11/site-packages/sqlalchemy/util/langhelpers.py”, line 146, in exit
raise exc_value.with_traceback(exc_tb)
File “/usr/lib64/python3.11/site-packages/sqlalchemy/pool/base.py”, line 898, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/create.py”, line 637, in connect
return dialect.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib64/python3.11/site-packages/sqlalchemy/engine/default.py”, line 615, in connect
return self.loaded_dbapi.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file
(Background on this error at: Error Messages — SQLAlchemy 2.0 Documentation)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/bin/pgadmin4”, line 5, in
from pgadmin4.pgAdmin4 import main
File “/usr/lib/python3.11/site-packages/pgadmin4/pgAdmin4.py”, line 104, in
app = create_app()
^^^^^^^^^^^^
File “/usr/lib/python3.11/site-packages/pgadmin4/pgadmin/init.py”, line 477, in create_app
run_migration_for_sqlite()
File “/usr/lib/python3.11/site-packages/pgadmin4/pgadmin/init.py”, line 414, in run_migration_for_sqlite
upgrade_db()
File “/usr/lib/python3.11/site-packages/pgadmin4/pgadmin/init.py”, line 395, in upgrade_db
backup_db_file()
File “/usr/lib/python3.11/site-packages/pgadmin4/pgadmin/init.py”, line 372, in backup_db_file
os.rename(SQLITE_PATH, backup_file_name)
FileNotFoundError: [Errno 2] No such file or directory: ‘/var/lib/pgadmin/pgadmin4.db’ → ‘/var/lib/pgadmin/pgadmin4.db.20231022153910’

die ich aber nicht zu interpretieren weiß. Hat jemand eine Idee, was ich tun muss?
Vielen Dank!
Gruß
Michael

Das ist wahrscheinlich nicht ganz die gewünschte Antwort, aber ich empfehle, einfach einen anderen, weniger problematischen Client zu verwenden. Ich persönlich nehme psql, aber es gibt eine reiche Auswahl: PostgreSQL Clients - PostgreSQL wiki

Ist das file da wo es sein soll und kann dein Client es lesen und schreiben?

Gruß Uwe

Hallo Laurenz,
vielen Dank für die Tipps. Die anderen Tools schaue ich mir mal an.

Hallo Uwe,
also: das Verzeichnis /var/lib/pgadmin existiert, die Datei pgadmin4.db allerdings nicht. Aber: Die Datei war schon einmal vorhanden, aber pgadmin4 wollte trotzdem nicht. Ich habe darauf alles, was nach pgadmin aussah, de- und neu installiert. Besagte Datei wurde dabei aber nicht wieder angelegt…
UND: Auf dem Host - Opensuse Leap 15.4 - ist pgadmin4 ebenfalls installiert und ich schrieb ja schon, dass es funktioniert, und dort gibt es unter /var/lib/pgadmin/ (auch) keine pgadmin4.db…
Alles sehr merkwürdig…
Dank und Gruß
Michael

Ich habe mich ein bißchen in die Source von pgAdmin eingelesen, und ich vermute, daß pgAdmin im Server-Modus startet. Deshalb versucht es seine Konfigurationsdatenbank in /var/lib/pgadmin anzulegen statt in ~/.pgadmin, und dort hat ein Normalsterblicher keine Schreibberechtigung.

Der Dokumentation folgend würde ich ein File /etc/pgadmin/config_system.py anlegen, in dem steht:

SERVER_MODE = False

Vielleicht geht es dann besser.

Hallo Laurenz,
das:
SERVER_MODE = False
habe ich gerade versucht, hat aber nicht gefruchtet - hätte mich auch gewundert, denn der vorhandene Eintrag SERVER_MODE = True war auskommentiert (nicht von mir)…
Jedenfalls meckert pgadmin auch mit dem Eintrag = False das Fehlen der erwähnten .db an…
Trotzdem danke für den Hinweis!
Gruß
Michael

Werde kreativ! Schau in die anderen Konfigurationsdateien, die in der Dokumentation beschrieben werden. Vielleicht wird die Einstellung ja irgendwo übersteuert.

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