psql 给出无效的数据目录错误

gag*_*ngh 5 postgresql ubuntu postgresql-10

我有安装了ubuntu 18.04 服务器的VM 。我已经从 repo安装了postgres 10

默认安装。我在 postgres.conf 中进行了一些与连接计数相关的更改,并在 pg_hba.conf 中进行了与连接安全相关的更改。

安装目录都是默认的,包括数据目录。

服务器正在运行。我能够创建数据库并从 java 客户端访问它。

但是当我从同一个 VM 启动 psql 时,它会引发以下错误。

Error: Invalid data directory
Run Code Online (Sandbox Code Playgroud)

只是没有任何参数的 psql 也会出现此错误。

人们在尝试更改数据目录时遇到了这个错误,这对我来说并非如此。数据目录是默认目录,它由 postgres 用户拥有。

ubuntu@ubuntu:~$ ls -l /var/lib/postgresql/10/
total 4
drwx------ 20 postgres postgres 4096 Jun 12 02:54 main
Run Code Online (Sandbox Code Playgroud)

知道可能是什么原因或我应该在哪里查找 psql 客户端的详细错误吗?

Dan*_*ité 11

错误:无效的数据目录

pg_wrapper无法从配置中找出数据目录时,就会发生这种情况。pg_wrapper是 postgres 之上的一层,可以在基于 debian 的系统上的几个实时 PostgreSQL 实例之间进行切换。由postgresql-client软件包安装,psqlpg_wrapper在此类系统上的链接:

/usr/bin/psql -> ../share/postgresql-common/pg_wrapper
Run Code Online (Sandbox Code Playgroud)

由于您提到稍微修改postgresql.conf,请确保您没有更改 里面的权限/etc/postgresql/,包括postgresql.conf. 这看起来是最有可能立即导致上述错误的更改。下一个是您的更改在语法上是错误的,pg_wrapper无法再解析文件。

  • 谢谢,你说得对。我正在使用 ansible 更新 postgres.conf。它将权限从 0644 更改为 0640。重置权限解决了该问题。不知何故,这并没有发生在 ubuntu 16.04 上。无论如何要增加 psql 命令的详细程度,以便我可以得到这个提示。 (3认同)