【问题标题】:Connecting to a Redshift cluster from pgAdmin从 pgAdmin 连接到 Redshift 集群
【发布时间】:2013-02-23 12:15:43
【问题描述】:

更新:也在 PgAdmin 支持邮件列表here 上询问。


所以我有一个 AWS Redshift 集群启动并运行,我可以使用

从命令行连接到它

$ psql -h host -d database -p port -U username

我想通过 pgAdmin III 连接到集群,但是在我连接到集群后,我收到一个错误提示:

错误:必须是超级用户才能查看 default_tablespace

注意,我输入的字段是:名称、主机、端口、维护数据库、用户名和密码,所有这些都与使用 psql 命令输入的相同。

现在,如果我通过 psql 连接,我会检查:

$ \tu

这个用户 [AWS 授予的主用户] 实际上是一个超级用户。那么对于可能导致此错误的原因有什么建议吗?

作为后续问题,当我连接到其他远程数据库时,即使我不是超级用户,我也不会收到此错误,那么这里发生了什么? Redshift 在通过 pgAdmin 连接时会导致发生此错误怎么办?

【问题讨论】:

  • 他们正在运行一个非常定制的 PostgreSQL 变体,所以如果它不完全兼容我不会感到惊讶。连接到psql 时,运行SHOW default_tablespace; 会做什么?在这种情况下,我怀疑他们已经通过内部权限检查来隐藏系统详细信息。
  • 从 psql 抛出同样的错误!截至 3 天前,我能够通过 pgAdmin 进行连接,所以也许他们从那时起改变了一些东西。尽管存在此权限问题,是否可以通过 pgAdmin 查询 Redshift 中的表? IE。诸如禁止 pgAdmin 尝试读取 default_tablespace 之类的东西?我不太明白我在说什么,但我只是想弄清楚是否有可能围绕这个问题破解 pgAdmin。
  • 我没看过,但怀疑它需要更改源代码级别,但可能不是非常复杂;当它无法访问default_tablespace GUC 时,它只需要隐藏其表空间意识。 PgAdmin-III 真正适用于 PostgreSQL 而不是它的第 3 方变体,但我想他们会接受补丁。尝试在 pgadmin-support 邮件列表中询问。如果您这样做了,请从您的帖子中链接回此问题,并在此处添加指向您帖子存档的链接。
  • 谢谢克雷格,我会做一些挖掘并尝试找到解决方案!

标签: amazon-redshift pgadmin


【解决方案1】:

PGAdmin 1.6.3 (from March 2007!) 对我(在 OS X 上)使用 Redshift 来说效果很好。

我想这是有道理的,因为 Redshift 是从 Postgres 8.0 分叉出来的。

注意:“很好”是指我希望从 GUI 中获得的东西可以正常工作。仍有一些怪癖和错误消息需要忽略。

【讨论】:

  • 似乎是 Postgres 版本的问题。不幸的是 1.6.3 不适合我们的目的,但很高兴知道发生了什么。
【解决方案2】:

试试 SQLWorkbench。我没有尝试过 pgadmin,但是 SqlWorkbench 和 Postgresql jdbc 连接器非常适合我。

【讨论】:

  • 我已经成功使用了SQLWorkbench,但是还有其他原因想要连接pgAdmin。
  • 我仍然认为 Data Grip 是最好的 db gui。它不是免费的,但完全值得。
【解决方案3】:

如果您只需要一种 GUI 方式来编辑复杂的 SQL,并且不想每次进行更改时都复制粘贴,则可以使用编辑快捷方式

pguser=> \e

这将打开您选择的编辑器(在您的机器上保存为$EDITOR

要覆盖它只是为了保留会话(如果您的默认设置是 vim 但想使用 gedit),请运行以下命令:

$ EDITOR=gedit psql -h host -d database -p port -U username

使用\e 编辑您的SQL,然后保存并退出。它会运行你的代码。然后再次打开\e,它会在您的编辑器中填充之前的查询。

享受吧!

【讨论】:

    猜你喜欢
    • 2017-11-04
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    相关资源
    最近更新 更多