[postgresql] psql无法连接到数据库

不积跬步,无以至千里;不积小流,无以成江海。

学习在于积累,日常工作中,会遇到很多问题。有些自己查资料解决了,有些问同事解决了,在自己查资料解决的问题下一次遇到的时候有印象,大部分情况下还能解决,但是如果再次遇到之前问同事解决的问题的时候,一般还是不知道该如何解决。

最近参加了公司内部的一个读书会,会中东哥的一席话让我印象很深刻:自己看书能记住20%,但是如果你把读的书在讲出来告诉别人,那你能记住70%,因为你在讲个别人听的时候,你需要自己对书很明白,才能给别人讲明白,这样你就能记忆更多。所以我觉得,遇到问题自己解决,在解决完后在记录下来,说明白根源,这样自己对这个错误的解决办法印象就会深刻。

今天,在连接postgresql数据库的时候,报了如下错误:

psql: could not connect to server: No such file or directory
         Is the server running locally and accepting
         connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

首先想到的办法是重启数据库。可是在重启之后还是报了同样的错误。为什么呢?重启大法竟然不管用了。于是乎想谷歌求助。最后在这篇文章中找到了答案。

文章链接

结合他提供的解决办法,回想起昨天电脑死机了一次!恍然大悟。

应该是自己电脑死机导致postgresql数据库实例非正常关闭,导致postgresql没有正常处理postmaster.pid这个文件,将数据库停止后将这个文件删除,在重启就解决问题了。那这个postmaster.pid文件是用来做什么的呢?

postmaster.pid

postmaster.pid:一个锁文件,记录着当前的 postmaster PID 和共享内存段 ID ,如果postmaster已经退出,PostgreSQL应该自动删除它

这个文件中的内容如下:

  5099                             //主进程PID
  /usr/local/var/postgres  //数据目录
  1490456286                 //文件创建时间
  5432                             //监听端口
  /tmp                              //unix socket监听文件
  localhost                       //监听地址
    5432001     65536      //共享内存的地址

通过一些常用的linux命令可以查看对应的内容:

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容