Debian OSでpgAdmin 4を使用しています。約1か月前は問題なく動作していましたが、今日ではSQLクエリツールが不可解なエラーメッセージ「table_oid」を表示しています。右クリックメニューの[データの表示/編集]オプションは、psqlコマンドラインからクエリを実行するのと同様に正常に機能します。サーバー接続を削除して再起動してみましたが、役に立ちませんでした
Pgadmin4.logファイルには、このエラーステートメントが数回含まれています。
2019-07-26 16:12:17,304: ERROR pgadmin: 'table_oid'
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/lib/python3/dist-packages/flask_login/utils.py", line 228, in decorated_view
return func(*args, **kwargs)
File "/usr/share/pgadmin4/web/pgadmin/tools/sqleditor/__init__.py", line 432, in poll
trans_obj.check_updatable_results_pkeys()
File "/usr/share/pgadmin4/web/pgadmin/tools/sqleditor/command.py", line 899, in check_updatable_results_pkeys
is_query_resultset_updatable(conn, sql_path)
File "/usr/share/pgadmin4/web/pgadmin/tools/sqleditor/utils/is_query_resultset_updatable.py", line 38, in is_query_resultset_updatable
table_oid = _check_single_table(columns_info)
File "/usr/share/pgadmin4/web/pgadmin/tools/sqleditor/utils/is_query_resultset_updatable.py", line 61, in _check_single_table
table_oid = columns_info[0]['table_oid']
KeyError: 'table_oid'
このエラーにより、約2時間前に戻りました。どんな助けでも大歓迎です!
このエラーに関するチケットは、postgresバグトラッカーに存在します。
問題はpython3-psycopg2が原因です。最新のpgadmin4バージョンにはpsycopg2 2.8が必要です。しかし、Debian/Ubuntuの安定版を使用している場合、aptはv2.7をインストールしました。
したがって、pipを使用して最新バージョンを追加する必要があります。
Sudo pip3 install -U psycopg2
次に、/ usr/local/libをpgadmin PythonPathに追加します(パスの最初になることを願っています)。
nano ~/.config/pgadmin/pgadmin4.conf # or with a right click on the system tray icon
# add /usr/local/lib/python3.7/dist-packages to the PythonPath.
別のバージョンのPythonを使用している場合は、このパスを変更する必要があります。
お役に立てれば。
編集(Quique応答を読んだ後):
psycopg2の2つのバージョンがある場合、これは問題ではありません。 v2.8には/ usr/local/libからのみアクセスできます。
v2.7 debianパッケージをアンインストールしようとすると、それに依存する他のパッケージ(QGISなど)で問題が発生する可能性があります。
vidlbは適切です。いくつかの詳細を追加します。
Sudo apt-get remove --purge psycopg2
Sudo pip3 install -U psycopg2
Sudo apt install pgadmin4
/usr/local/lib/python3.6/dist-packages
(またはシステムの正しいパス)。または、~/.config/pgadmin/pgadmin4.conf
のようになります[General]
ApplicationPath=
BrowserCommand=
FixedPort=false
PortNumber=1
PythonPath=/usr/local/lib/python3.6/dist-packages
PgAdmin 4.11は、psycopg2ではなくpsycopg2-binaryに依存するようになりました。 2.8の場合、2.7をアンインストールする必要はありません。
pip3 install --user psycopg2-binary
VidlbとQuiqueに感謝します。
Vidlbが前述したように、現在pgadmin4のpsycopg2パッケージに関連するバグがあります。 DebainとUbuntuでこの問題に問題がある場合は、このバグについて下記のリンクを参照してください。 警告ステータスレポートを表示する前に、Redmineのアカウントを持っている必要があります。
特に注7には、DebianおよびUbuntuユーザー向けのクイックフィックスがあります。 stretchからbusterにも更新しました(stretchにはaptがないためPython 3.7のサポート。Pythonアップデートを手動でインストールする気がありませんでした。
これですべてうまくいきました、乾杯!