不积跬步,无以至千里;不积小流,无以成江海。
学习在于积累,日常工作中,会遇到很多问题。有些自己查资料解决了,有些问同事解决了,在自己查资料解决的问题下一次遇到的时候有印象,大部分情况下还能解决,但是如果再次遇到之前问同事解决的问题的时候,一般还是不知道该如何解决。
最近参加了公司内部的一个读书会,会中东哥的一席话让我印象很深刻:自己看书能记住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命令可以查看对应的内容: