PostgreSQL server无法在ArchLinux上启动:致命:无法创建锁文件»/运行/postgresql/.s.PGSQL.5432.lock«;

PostgreSQL server无法在ArchLinux上启动:致命:无法创建锁文件»/运行/postgresql/.s.PGSQL.5432.lock«;,postgresql,archlinux,Postgresql,Archlinux,我对Arch很陌生,对PostgreSQL完全是初学者,所以这可能是一个非常基本的问题 我从extra安装了postgresql 11.5-4,从AUR安装了pgadmin 4,两者似乎都运行良好。 我使用以下命令创建了一个测试数据库: initdb -D /home/lg/test-db 我得到了答案: You can start the db-server using: pg_ctl -D /home/lg/test-db -l logdatei start 我试过了,得到了: pg_c

我对Arch很陌生,对PostgreSQL完全是初学者,所以这可能是一个非常基本的问题

我从extra安装了postgresql 11.5-4,从AUR安装了pgadmin 4,两者似乎都运行良好。 我使用以下命令创建了一个测试数据库:

initdb -D /home/lg/test-db
我得到了答案:

You can start the db-server using:
pg_ctl -D /home/lg/test-db -l logdatei start
我试过了,得到了:

pg_ctl -D /home/lg/test-db -l logdatei start
waiting for serer to start.... stopped 
pg_ctl: could not start the server
check the log.

日志仅说明无法创建锁文件»/run/postgresql/.s.PGSQL.5432.lock«,因为找不到该文件夹。在/run下没有名为“postgresql”的文件夹。我想postgresql无法创建此文件夹,因为它没有权限。然而,一些在线帖子建议将db的用户/所有者改为sudo。然而,Postgresql阻止了这一点。当我以sudo的形式尝试任何命令时,postgresql告诉我这个命令不能以root用户的身份运行。我的想法中肯定有一些非常基本的错误,但我已经3个小时没有解决了。

在启动服务器之前,您必须从
unix\u socket\u目录中删除
/run/postgresql
,然后再从
postgresql.conf
中删除

您可能已经将/var/run符号链接到/run,并且运行在tmpfs上。您应该将
d/run/postgresql 0755 postgres-postgres-
之类的内容添加到/usr/lib/tmpfiles.d/postgresql.conf

您似乎有另一个实例从另一个数据目录运行(在服务器上的其他地方查找
postmaster.pid
),谢谢。我尝试了两种方法,将unix\u socket\u目录设置为/home/lg中的文件夹,并将其留空。错误保持不变。日志文件显示:+2019-11-26 06:20:47.659 CET[1917]日志:期望在IPv6地址连接“::1”,端口5432+2019-11-26 06:20:47.659 CET[1917]日志:期望在IPv4地址“127.0.0.1”,端口5432+2019-11-26 06:20:47.662 CET[1917]处连接致命:无法创建锁文件“/run/postgresql/.s.PGSQL.5432.lock”:找不到文件或目录+2019-11-26 06:20:47.662 CET[1917]日志:数据库系统已关闭可能您忘记删除行前的注释(
#
)。是的,成功了。非常感谢你。仅供参考:我设置unix_socket_directories='/home/lg/test db',这是数据库本身的目录。我不确定这是否明智。文件postmaster.pid在db服务器启动后出现,该文件以前缺失。它现在位于文件夹/home/lg/test-db中。默认(和规范)位置是
/tmp
。如果不需要Unix套接字连接,可以将其设置为
'
。@Martin这与连接无关,与启动PostgreSQL有关。如果无法创建套接字文件,服务器将拒绝启动。