pgAdmin 4 无法确定的错误

Arb*_*ols 9 linux debian postgresql pgadmin

我在 Debian 操作系统上使用 pgAdmin 4。大约一个月前它运行良好,但今天它的 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'
Run Code Online (Sandbox Code Playgroud)

这个错误让我回到了大约两个小时。任何帮助将不胜感激!

vid*_*dlb 6

postgres bugtracker 中存在关于此错误的票证。
问题是由于 python3-psycopg2。最新的 pgadmin4 版本需要 psycopg2 2.8。但是如果你使用的是 Debian/Ubuntu stable,apt 安装了 v2.7。
所以我们需要用 pip 添加最新版本:

sudo pip3 install -U psycopg2
Run Code Online (Sandbox Code Playgroud)

然后在 pgadmin PythonPath 中添加 /usr/local/lib (并希望它是路径中的第一个):

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.
Run Code Online (Sandbox Code Playgroud)

如果您使用的是其他版本的 Python,则必须更改此路径。
希望这可以帮助。

编辑(阅读 Quique 回复后):
如果您有两个版本的 psycopg2 这不是问题;v2.8 只能通过 /usr/local/lib 访问。
如果您尝试卸载 v2.7 debian 软件包,则依赖它的其他软件包(例如 QGIS)可能会遇到一些问题。


小智 5

vidlb 就在现场,我将添加一些细节:

  1. 为了使用psycopg2 2.8安装,你必须先卸载psycopg2 debian包,它也会卸载pgadmin4。
sudo apt-get remove --purge psycopg2
sudo pip3 install -U psycopg2
sudo apt install pgadmin4
Run Code Online (Sandbox Code Playgroud)
  1. 更新 Python 路径的最简单方法是在 pgadmin 系统托盘图标上用鼠标右键单击,然后选择配置...在 Python 选项卡中,用/usr/local/lib/python3.6/dist-packages(或您系统的正确路径)填充 Python 路径框. 或者,您可以编辑~/.config/pgadmin/pgadmin4.conf看起来像
[General]
ApplicationPath=
BrowserCommand=
FixedPort=false
PortNumber=1
PythonPath=/usr/local/lib/python3.6/dist-packages
Run Code Online (Sandbox Code Playgroud)