【问题标题】:Connecting Apache Superset with PostgreSQL将 Apache 超集与 PostgreSQL 连接起来
【发布时间】:2020-04-02 11:43:15
【问题描述】:

假设我在 Docker 上运行我的 Apache Superset,我希望它与我的本地 postgreSQL 服务器连接。我使用了以下 URI,但出现错误:

postgresql+psycopg2://username:password@localhost:5432/mydb

错误是:

ERROR: {"error": "Connection failed!\n\nThe error message returned was:\n(psycopg2.OperationalError) could not connect to server: Connection refused\n\tIs the server running on host \"localhost\" (127.0.0.1) and accepting\n\tTCP/IP connections on port 5432?\ncould not connect to server: Cannot assign requested address\n\tIs the server running on host \"localhost\" (::1) and accepting\n\tTCP/IP connections on port 5432?\n\n(Background on this error at: http://sqlalche.me/e/e3q8)", "stacktrace": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py\", line 2265, in _wrap_pool_connect\n    return fn()\n  File \"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py\", line 303, in unique_connection\n    return _ConnectionFairy._checkout(self)\n  File \"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py\", line 760, in _checkout\n    fairy = _ConnectionRecord.checkout(pool)\n  File \"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py\", line 492, in checkout\n    rec = pool._do_get()\n  File \"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/impl.py\", line 238, in _do_get\n    return self._create_connection()\n  File \"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py\", line 308, in _create_connection\n    return _ConnectionRecord(self)\n  File \"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py\", line 437, in __init__\n    self.__connect(first_connect_check=True)\n  File \"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py\", line 639, in __connect\n    connection = pool._invoke_creator(self)\n  File \"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/strategies.py\", line 114, in ...

我该如何解决?

【问题讨论】:

  • 使用 127.0.0.1 代替 localhost,见stackoverflow.com/questions/31249112/…
  • @DavidTobiano 我做到了,我又得到了错误。
  • 好的。您是否也尝试过在启动容器时指向 --add-host= 标志的解决方案?
  • 我也有同样的问题!

标签: postgresql superset apache-superset


【解决方案1】:

我也有这个问题!我用来连接的相同错误和连接字符串。 不要使用 localhost 或 127.0.0.1,而是打开你的 pgAdmin。 服务器位于左侧

  • 点击下拉菜单。
  • 右键单击现在打开的集群(“数据库”上方的级别)并打开属性。
  • 导航到打开的连接选项卡,主机名/地址将替换“localhost”

还要确保连接字符串的最后部分指向您的数据库,该数据库比您的 pgAdmin 中的“数据库”低一级。

我希望这对我有用,我自己就是这样做的!

【讨论】:

  • 对不起,我的意思是我的用例可能与你的不同,因为我通过 Debian VM 使用 Superset 并从远程 PostgreSQL 数据库中提取数据
  • 在 pgAdmin4 v4.13 中,“属性”对话框中没有“连接选项卡”或主机名/地址。在浏览器 URL 地址栏中,我看到 127.0.0.1/57441/browser/ 我的数据库所有者和数据库名称仍然都是“postgres”。
【解决方案2】:

我知道将 Docker 与主机数据库连接是一种不好的做法,因此我改变了看法并在 docker 中使用 postgres 图像并将我的数据推送到该 postgres 服务器。 如果我错了,如果你通知我会很有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 2013-05-10
    • 2019-10-09
    • 1970-01-01
    • 2014-12-05
    • 2012-10-19
    • 1970-01-01
    相关资源
    最近更新 更多