【问题标题】:PostgreSQL - getting an error when listing databases with message "ERROR: column d.daticu does not exist"PostgreSQL - 列出带有消息“错误:d.daticu 列不存在”的数据库时出现错误
【发布时间】:2020-05-20 11:26:23
【问题描述】:

在 PostgreSQL 中列出数据库时可能导致以下错误的原因。

我有 2 个集群在不同端口和不同数据目录下的同一台机器上运行。当我连接到其中一个时,该命令工作正常,但当我连接到另一个时失败。

一个集群使用 PostgreSQL 数据库社区版本,而另一个使用 EnterpriseDB Advanced Server 12.1.2 postgres 平台,但位于同一台机器上,但目录不同。

我的psql客户端版本是psql (EnterpriseDB) 12.1.2,数据库版本是PostgreSQL 12.1, compiled by Visual C++ build 1914, 64-bit

遇到的错误是:

postgres=# \l
ERROR:  column d.daticu does not exist
LINE 6:        d.daticu as "ICU",
               ^
HINT:  Perhaps you meant to reference the column "d.datacl".

【问题讨论】:

  • 错误信息的哪一部分你不明白?看起来真的很清楚。
  • 您确定要连接 Postgres 12 服务器吗? select version(); 带给你什么?
  • 挑战是我只是列出数据库而不运行选择语句。应该在哪里创建该列“daticu”。这似乎是命令正在运行的查询中的某些内容。
  • 我添加了psql和数据库版本2个版本的截图
  • 如果您运行psql -E,您将看到\l 使用的查询。但是“香草”Postgres 确实没有列pg_database.daticu - 我猜这是psql 的企业数据库版本中的某种错误。您可以联系他们,也可以使用“社区”Postgres 中的psql

标签: sql postgresql psql enterprisedb


【解决方案1】:

您的服务器是开源 PostgreSQL,而psql 是 EnterpriseDB 的分支。

EnterpriseDB 必须破解他们的pg_database 以包含一个额外的列,并且为\l 运行的查询引用了该列。现在开源的PostgreSQL没有那个列,所以查询失败。

使用来自与服务器相同分布的psql 以获得最佳结果。

【讨论】:

  • 没错。谢谢劳伦兹。我使用了与开源 postgresql 相同发行版的 psql,并且工作正常。
猜你喜欢
  • 1970-01-01
  • 2017-03-16
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
  • 2019-01-08
  • 2012-07-06
相关资源
最近更新 更多