我重启了Postgres服务器,但现在.我检查了我的"pgstartup.log"日志文件.这说:
creating system views ... ok
loading system objects' descriptions ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok
Success. You can now start the database server using:
/usr/bin/postgres -D /var/lib/pgsql/data
/usr/bin/pg_ctl -D /var/lib/pgsql/data -l logfile start
FATAL: could not open lock file "/tmp/.s.PGSQL.5432.lock": Permission denied
FATAL: could not open lock file "/tmp/.s.PGSQL.5432.lock": Permission denied
Run Code Online (Sandbox Code Playgroud)
你认为删除/tmp/.s.PGSQL.5432.lock
会起作用吗?
Are*_*efe 15
如果您知道没有其他 Postgres 进程正在运行,请删除这 2 个文件并重试:
$ sudo rm /tmp/.s.PGSQL.5432.lock
$ sudo rm /tmp/.s.PGSQL.5432
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用以下命令将服务器作为后台进程运行:
$ pg_ctl -D /usr/local/var/postgres start
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 OS X,请将别名放入 .bash_profile 中,如下所示:
alias pgb='pg_ctl -D /usr/local/var/postgres start'
Run Code Online (Sandbox Code Playgroud)
现在,使用以下命令获取它:
$ source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)
Postgres 服务器将使用以下命令运行:
$ pgb
Run Code Online (Sandbox Code Playgroud)
由于在 /tmp 目录上设置了权限,Postgres 无法将文件写入 /tmp。作为 root 用户在终端中执行:
chmod 1777 /tmp
Run Code Online (Sandbox Code Playgroud)
PostgreSQL 通常在正确终止时删除锁定文件。
这可能是由于另一个 PostgreSQL 实例与不同的用户一起运行,该用户已异常终止(一个 kill -9 到 postmaster)。
因此,如果您确定没有 Postgres 进程正在运行,您可以毫无问题地删除该文件。您还应该使用该ipcs
命令检查是否有任何陈旧的共享内存段,在这种情况下,使用ipcrm
.
一次解决所有这些问题的最好方法可能是重新启动服务器。
PS:从来没有kill -9
任何 PostgreSQL 进程。