我在Gentoo上启动Postgresql时遇到问题。
$ /etc/init.d/postgresql-9.1 start * Socket conflict. * A server is already listening on: * /var/run/postgresql/.s.PGSQL.5432 * HINT: Change PGPORT to listen on a different socket.
我删除了文件/var/run/postgresql/.s.PGSQL.5432服务启动并运行良好。 我猜服务器closures了,把文件留在那里。 我检查了netstat,看是否有一个进程正在监听那个端口,但是没有。
我的问题是,我将来如何避免这个问题呢?
postgresclosures(干净)时,应该删除套接字。 最有可能的原因是,你的计算机是不清洁的重新启动(停电,重置button,…),或Postgres坠毁,没有时间/机会删除套接字文件。
如果你做一个干净的关机/重启,这应该不会发生。 如果postgres崩溃,你有一个更大的问题,然后一个陈旧的套接字。 如果经常发生硬重启,那么数据丢失/损坏的可能性很大。
您可以在启动时从其中一个init脚本中删除套接字(取决于发行版),或编辑postgres init脚本以在启动之前删除套接字(如果在一个postgresd已经在运行时无意中运行它,并且您删除它的套接字)。
如果它不是一个软件错误,那么只需要确保在需要时适当地停止postgresql服务器。 这对于避免数据丢失也是至关重要的。