Pgadmin-4

SQLAlchemy:表版本已經存在。pgAdmin4 在 Linux Mint 20 和 20.1 上失敗

  • December 27, 2021

我已經找到了解決方案,我只是想分享一下,以防有人遇到同樣的問題。

情況

在 virtualenv 中的 Linux Mint 20 (Ulyana) 和 Linux Mint 20.1 (Ulyssa) 上安裝 pgAdmin4 版本 4.30。pgAdmin4 的大部分是使用 Flask 框架編寫的 Python Web 應用程序。因此,它是在 Python virtualenv 中實現的理想候選者,如下所示:

如何在 Linux Mint 20 上使用 pgAdmin4 安裝 PostgreSQL

和,

在 Linux Mint 20 (ulyana) 上安裝 pgAdmin 4

在西班牙語中,

如何在 Linux Mint 20 上使用 pgAdmin4 安裝 PostgreSQL

錯誤

完成該過程後,第一次嘗試執行 pgAdmin4 時,出現以下錯誤:

Traceback (most recent call last):
 File "venv/lib/python3.8/site-packages/pgadmin4/pgAdmin4.py", line 87, in <module>
   exec(open(file_quote(setup_py), 'r').read())
 File "<string>", line 449, in <module>
 File "<string>", line 372, in setup_db
 
 [...]

 File "/home/mint/pgAdmin4/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 575, in get_options
   self._sa.apply_driver_hacks(self._app, sa_url, options)
 File "/home/mint/pgAdmin4/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 908, in apply_driver_hacks
   sa_url.database = os.path.join(app.root_path, sa_url.database)
AttributeError: can't set attribute

第二次嘗試執行 pgAdmin4 時,顯示的錯誤是:

Traceback (most recent call last):
 File "/home/mint/pgAdmin4/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1705, in _execute_context
   self.dialect.do_execute(
 File "/home/mint/pgAdmin4/venv/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 681, in do_execute
   cursor.execute(statement, parameters)
sqlite3.OperationalError: table version already exists

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

Traceback (most recent call last):
 File "venv/lib/python3.8/site-packages/pgadmin4/pgAdmin4.py", line 94, in <module>
   app = create_app()
 
 [...]

 File "/home/mint/pgAdmin4/venv/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 681, in do_execute
   cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table version already exists
[SQL: 
CREATE TABLE version (
   name VARCHAR(32) NOT NULL, 
   value INTEGER NOT NULL, 
   PRIMARY KEY (name)
)

]
(Background on this error at: http://sqlalche.me/e/14/e3q8)

這種情況於 2021 年 3 月開始發生,據我所知,Linux Mint 20 和 Linux Mint 20.1 上的情況相同。

注意:放置 virtualenv 的更合適的位置是/opt,但是對於多個測試,我選擇了/home帶有 Linux Mint 20 的 live USB。然後將最終更改應用到我的 Linux Mint 20.1

解決方案

將 SQLAlchemy 降級到較早的非衝突版本。

在發布解釋在 Linux Mint 20 上的 virtualenv 中安裝 pgAdmin4 的步驟的文章時,pip 正在實施 SQLAlchemy 1.3.23。然後,在這最後幾天,使用的版本是 SQLAlchemy 1.4.1

降級可以使用pip install --upgrade. --upgrade可用於兩者,降級或升級。

(venv) mint@mint:~/pgAdmin4$ pip install --upgrade SQLAlchemy==1.3.23

此後,當嘗試執行 pdAdmin4 時,將顯示一個新問題:

Traceback (most recent call last):
 File "venv/lib/python3.8/site-packages/pgadmin4/pgAdmin4.py", line 94, in <module>
   app = create_app()
 File "/home/mint/pgAdmin4/venv/lib/python3.8/site-packages/pgadmin4/pgadmin/__init__.py", line 347, in create_app
   if not os.path.exists(SQLITE_PATH) or get_version() == -1:
 File "/home/mint/pgAdmin4/venv/lib/python3.8/site-packages/pgadmin4/pgadmin/setup/db_version.py", line 19, in get_version
   return version.value
AttributeError: 'NoneType' object has no attribute 'value'

~/.pgadmin通過刪除目錄(在安裝期間創建)然後重新執行“python pgAdmin4.py”解決了這個新問題

我知道回答有點晚了,但在某些情況下,有人仍在尋找解決方案。這是解決我的問題。

我只是按照教程

如何在 Linux Mint 20 上使用 pgAdmin4 安裝 PostgreSQL(第一個連結)

和,

在 Linux Mint 20 (ulyana) 上安裝 pgAdmin 4(第二個連結)

首先更新我們所有的 pip 包。下面是如何做到這一點。

然後我所做的就是將安裝連結更改為最新版本,因此其他所需的軟體包也會更新。

或者簡單地說,在第11 步(在第一個連結上)或在第6 步(在第二個連結上)將命令更改為這個:

pip install https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v6.1/pip/pgadmin4-6.1-py3-none-any.whl

之後,執行教程中的下一步。

引用自:https://dba.stackexchange.com/questions/287352