PostgreSQL说无法启动服务器时该怎么办


你好,这是章鱼,正在学习,目的是雇用程序员。

介绍

在本文中,

在启动PostgreSQL服务器时

1
2
3
4
5
6
7
8
9
10
11
12
$ pg_ctl start

waiting for server to start....2020-04-23 14:29:14.708 JST [888] LOG:  starting PostgreSQL 12.2 on x86_64-apple-darwin18.7.0, compiled by Apple clang version 11.0.0 (clang-1100.0.33.17), 64-bit
2020-04-23 14:29:14.709 JST [888] LOG:  could not bind IPv6 address "::1": Address already in use
2020-04-23 14:29:14.709 JST [888] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2020-04-23 14:29:14.710 JST [888] LOG:  could not bind IPv4 address "127.0.0.1": Address already in use
2020-04-23 14:29:14.710 JST [888] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2020-04-23 14:29:14.710 JST [888] WARNING:  could not create listen socket for "localhost"
2020-04-23 14:29:14.710 JST [888] FATAL:  could not create any TCP/IP sockets
2020-04-23 14:29:14.710 JST [888] LOG:  database system is shut down
 stopped waiting
pg_ctl: could not start server

写出出现

之类的错误时的处理方法。

错误含义

该错误的意思是"端口号5432已在使用中,因此您无法在5432上设置服务器!(请参见第1行)"。

就我而言,昨天使用的服务器仍然存在。

每次启动PostgreSQL服务器时都使用终端。
按下$ pg_ctl start和关闭
按下$ pg_ctl stop将其关闭(请告诉我是否有一种自动化的方法...)

但是,有时PC会一直关机而不停止,在这种情况下,会出现开头所述的错误。
有时我会沉迷于错误并花一些时间,但是这次我可能已经找到了避免再次担心的方法,因此我将在此处编写。

我尝试过的(可能会在途中解决)

以防万一,请检查服务器是否在PostgreSQL中运行。

1
2
$ pg_ctl status
pg_ctl: no server running

您尚未启动。

接下来,查看端口5432上是否有问题。

1
2
3
4
5
$ sudo lsof -i:5432
Password:
COMMAND  PID     USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
postgres  65 postgres    4u  IPv6 0x7e9b8bc85f43493d      0t0  TCP *:postgresql (LISTEN)
postgres  65 postgres    5u  IPv4 0x7e9b8bc85eeb7cdd      0t0  TCP *:postgresql (LISTEN)

有。

换句话说,该过程仍然存在,必须终止。要删除进程,可以通过删除PID文件来完成许多模式。

1
$ rm /usr/local/var/postgres/postmaster.pid

尝试执行此操作。这是某些人的解决方案。但是,

1
No such file or directory

如果您被告知

,请继续阅读。

查找postmaster.pid

从这里开始,它相当稳定。

如果在

/ usr / local / var / postgres中看不到postmaster.pid文件,则该文件可能在另一个PostgreSQL文件夹内的data文件夹中。

在我的情况下,由于该数据文件夹由于管理员限制而被锁定,因此无法使用文件路径。也许其他人也可以这样做,所以我将尝试自行查找文件。

1.查找数据文件
打开Finder并转到Mac SSD ???库??? PostgreSQL ??? 12?(此处的数字因版本而异)。
然后,其中有一个名为data的文件,但是我认为由于管理员的限制它已被锁定。

2.解锁。
单击该文件夹以查看信息?单击右下角的挂锁标记以对其进行解锁?输入您的计算机的密码?我认为每个人都"无法访问",因此将其更改为"读/写"

您现在应该可以打开数据文件夹。
3.如果其中包含postmaster.pid,请将其放入垃圾箱。

4.重新启动计算机

5.确保服务器已启动??

1
2
3
4
5
6
7
8
9
$ pg_ctl start
waiting for server to start....2020-04-24 10:13:39.361 JST [629] LOG:  starting PostgreSQL 12.2 on x86_64-apple-darwin18.7.0, compiled by Apple clang version 11.0.0 (clang-1100.0.33.17), 64-bit
2020-04-24 10:13:39.362 JST [629] LOG:  listening on IPv6 address "::1", port 5432
2020-04-24 10:13:39.362 JST [629] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2020-04-24 10:13:39.363 JST [629] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2020-04-24 10:13:39.405 JST [630] LOG:  database system was shut down at 2020-04-23 22:25:29 JST
2020-04-24 10:13:39.418 JST [629] LOG:  database system is ready to accept connections
 done
server started

显示时,表示处理完成。感谢你的努力工作。