在我做了brew更新和brew升级后,我的postgres遇到了一些问题。我尝试卸载postgres并重新安装,但它不能正常工作。

这是错误消息。(我也得到了这个错误信息,当我试图做耙db:迁移)

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

我怎么解决呢?

Mac版:山狮。

自制版本:0.9.3

版本:psql (PostgreSQL) 9.2.1

这就是我所做的:

$ brew uninstall postgresql Uninstalling /usr/local/Cellar/postgresql/9.2.1... $ brew uninstall postgresql Uninstalling /usr/local/Cellar/postgresql/9.1.4... $ psql --version bash: /usr/local/bin/psql: No such file or directory $ brew install postgresql ==> Downloading http://ftp.postgresql.org/pub/source/v9.2.1/postgresql-9.2.1.tar.bz2 Already downloaded: /Library/Caches/Homebrew/postgresql-9.2.1.tar.bz2 ...... ...... ==> Summary /usr/local/Cellar/postgresql/9.2.1: 2814 files, 38M, built in 2.7 minutes $ initdb /usr/local/var/postgres -E utf8 The files belonging to this database system will be owned by user "laigary". This user must also own the server process. The database cluster will be initialized with locale "en_US.UTF-8". The default text search configuration will be set to "english". initdb: directory "/usr/local/var/postgres" exists but is not empty If you want to create a new database system, either remove or empty the directory "/usr/local/var/postgres" or run initdb with an argument other than "/usr/local/var/postgres". $ mkdir -p ~/Library/LaunchAgents $ cp /usr/local/Cellar/postgresql/9.2.1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/ $ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist homebrew.mxcl.postgresql: Already loaded $ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start server starting $ env ARCHFLAGS="-arch x86_64" gem install pg Building native extensions. This could take a while... Successfully installed pg-0.14.1 1 gem installed $ psql --version psql (PostgreSQL) 9.2.1 $ psql psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

现在,在我重新安装homebrew之后,当我使用$ psql时,它不会显示任何错误消息。

但是我在我的Rails应用程序中运行rake db:migrate,它显示:

could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"? /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `initialize' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `new' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `connect' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:309:in `new_connection' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:319:in `checkout_new_connection' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:241:in `block (2 levels) in checkout' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `loop' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `block in checkout' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:233:in `checkout' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:96:in `block in connection' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:404:in `retrieve_connection' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:170:in `retrieve_connection' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:144:in `connection' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:107:in `rescue in create_database' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:51:in `create_database' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (3 levels) in <top (required)>' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `each' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (2 levels) in <top (required)>' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `call' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `each' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `execute' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:144:in `invoke' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `each' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:88:in `top_level' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:66:in `block in run' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling' /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:63:in `run' /usr/local/bin/rake:32:in `<main>' Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"riy_development", "pool"=>5, "username"=>nil, "password"=>nil}

我终于找到了解决办法。

sudo mkdir /var/pgsql_socket/
sudo ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

这个解决方案有点棘手,但它有效。希望大家有更好的解决方案

更新

这也适用于我。

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

检查套接字文件是否存在。

$ ls -l /tmp/.s.PGSQL.5432
srwxrwxrwx  1 you  wheel  0 Nov 16 09:22 /tmp/.s.PGSQL.5432

如果没有,那么检查postgresql.conf中unix_socket_directory的变化。

$ grep unix_socket /usr/local/var/postgres/postgresql.conf
#unix_socket_directory = ''     # (change requires restart)
#unix_socket_group = ''         # (change requires restart)
#unix_socket_permissions = 0777     # begin with 0 to use octal notation

对于阅读本文并使用Postgres的人。App,你可能需要在你的database.yml中使用host: localhost。http://postgresapp.com/documentation#toc_3


的原因

Lion已经安装了一个postgres版本,默认使用这些二进制文件。一般来说,你可以通过使用自制postgres二进制文件的完整路径来解决这个问题,但其他程序可能仍然存在问题。

解决方案

运行这个脚本:

#!/bin/sh

BREW_POSTGRES_DIR=`brew info postgres | awk '{print $1"/bin"}' | grep "/postgresql/"`
LION_POSTGRES_DIR=`which postgres | xargs dirname`
LION_PSQL_DIR=`which psql | xargs dirname`

sudo mkdir -p $LION_POSTGRES_DIR/archive
sudo mkdir -p $LION_PSQL_DIR/archive

for i in `ls $BREW_POSTGRES_DIR`
do
    if [ -f $LION_POSTGRES_DIR/$i ] 
    then
        sudo mv $LION_POSTGRES_DIR/$i $LION_POSTGRES_DIR/archive/$i
        sudo ln -s $BREW_POSTGRES_DIR/$i $LION_POSTGRES_DIR/$i
    fi
    
    if [ -f $LION_PSQL_DIR/$i ] 
    then
        sudo mv $LION_PSQL_DIR/$i $LION_PSQL_DIR/archive/$i
        sudo ln -s $BREW_POSTGRES_DIR/$i $LION_PSQL_DIR/$i
    fi  
done

Via

http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/


更改postresql或数据库。yml配置设置、更改$PATH或创建符号链接对我来说都是不必要的。我所需要做的就是卸载pg,然后捆绑(或gem安装pg)。

问题是pg gem在自制postgres之前已经安装,所以从MacOS附带的postgres版本中获取设置。重新安装它(从而重建本机扩展)解决了这个问题。


有一个类似的问题;日志含义pid文件阻止postgres启动。解决方法:

$ rm /usr/local/var/postgres/postmaster.pid
$ brew services restart postgresql

然后一切都好了。


更新:

对于Apple M1 (Big Sur)用户,请这样做:

$ rm /opt/homebrew/var/postgres/postmaster.pid
$ brew services restart postgresql

更新(2022年11月15日):

对于Apple M1 / M2 (Ventura)用户,只需这样做:

$ bundle install (just to make sure pg is installed)
$ brew services restart postgresql

我在尝试恢复/删除/创建一个数据库而其他进程正在访问它们时遇到了这个问题。MacOSX/Homebrew修复:

关闭所有其他访问进程,rails服务器,rails控制台,守卫等… 使用brew info postgres中的命令加载/卸载 运行restore/drop/create from before


Psql选项

- h主机名 ——主机=主机名

:服务器所在机器的主机名。 如果该值以斜杠开头,则将其用作unix域套接字的目录。

$ grep "port\|unix_socket" /etc/postgresql/9.1/main/postgresql.conf
port = 5433                                         # (change requires restart)
unix_socket_directory = '/var/run/postgresql'       # (change requires resta

$ netstat -nalp | grep postgres
unix  2      [ ACC ]     STREAM     LISTENING     106753   4349/postgres       /tmp/.s.PGSQL.5432
unix  2      [ ACC ]     STREAM     LISTENING     10377 1031/postgres       /var/run/postgresql/.s.PGSQL.5433

使用-host选项运行psql

$ psql -p 5433 -h /var/run/postgresql

不需要做软链接


我得到了同样的错误。结果是postgres根本没有运行(它通常总是在后台运行,但不知出于什么原因,今天它没有运行)。

如果是这种情况,只需在项目目录的命令行中键入postgres


经过大量的反复,最终我决定使用pg gem版本。在mavericks上,pg版本0.15.1不能连接到端口5432,但版本0.17.1却可以-非常奇怪。


在Yosemite上,如果pid文件阻止Postgres启动,并且你有一个launchctl守护进程尝试(并且失败)加载数据库守护进程,那么你需要卸载plist文件:

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

然后删除pid文件

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

然后重新加载launchctl守护进程

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

当brew执行postgres升级时,有时会发生这种情况,导致数据文件与新服务器不兼容。

以我为例,它发生在从9.3升级到9.4时。

OS X / Homebrew:

试着运行postgres -D /usr/local/var/postgres——如果postgres启动失败,它会给你一个更详细的输出。或者打开/usr/local/var/log/ postgress .log (Mac M1上的/opt/homebrew/var/log/ postgress .log)的日志文件,并寻找“致命:数据库文件与服务器不兼容”行

在我的例子中,运行rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8删除了我的旧数据库,然后重新初始化postgres db模式。(这会破坏你的数据)

感谢https://github.com/Homebrew/homebrew/issues/35240提供的解决方案。彻底重新安装的完整说明可以在这里找到:如何完全卸载和重新安装Homebrew Postgres - Test Double Blog(再次强调,如果你在M1 Mac上,那么替换/opt/ Homebrew /var路径,无论它说/usr/local/var)

在重新生成我的数据库(使用rake db:create)后,一切都恢复正常。

最后,评论中的链接指出了这个可能的解决方案,可以保留你的数据,但我还没有尝试过:如何将PostgreSQL从9.6版本升级到10.1版本而不丢失数据- Stack Overflow


安装后只需两步即可运行数据库(在此之前确保您以postgres用户登录)

Installed-Dirs/bin/postmaster -D Installed-Dirs/pgsql/data . exe

举个例子:

[postgres@localhost bin]$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data

步骤2:从安装路径运行psql(检查您安装的位置'#which postgres'将使用找到安装位置)

[postgres@localhost bin]$ psql 

据我所知,这是今天发生在我身上的事情,但当时我正在运行Ubuntu更新,可能是在更新Postgres。更新完成后,我就可以顺利连接了。

为了完整起见,我试图从Rails控制台的数据库中检索记录:

development (main):0 > a = MyModel.find 73694
PG::ConnectionBad: 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"?

我找到了一个适合我的解决方案:

https://dba.stackexchange.com/questions/75214/psql-could-not-connect-to-server-no-such-file-or-directory

您可以执行以下命令手动启动服务器:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

看起来你的psql不能运行。你应该在连接之前运行它。你可以使用Postgres。仅适用于Mac OS。(下载并安装此应用程序http://postgresapp.com)打开应用程序,你就有一个PostgreSQL服务器准备好并等待新的连接。关闭应用程序,服务器关闭。你也可以在这里找到这些信息http://www.postgresql.org/download/macosx/。希望这对你有所帮助。


当我从9.3.4升级到9.5时就遇到了这种情况,因为数据库不升级就不兼容。

我使用pg_upgrade,如下所示:

停止发布

$ brew services stop postgresql

升级数据库:

$ pg_upgrade \
   -d /usr/local/var/postgres \
   -D /usr/local/var/postgres9.5 \
   -b /usr/local/Cellar/postgresql/9.3.4/bin/ \
   -B /usr/local/Cellar/postgresql/9.5.0/bin/ \
   -v

存档旧数据库:

 $ mv /usr/local/var/postgres /usr/local/var/postgres9.3.save
 $ mv /usr/local/var/postgres9.5 /usr/local/var/postgres

重启postgres:

 $ brew services start postgresql

更新的Gems(用于rails /活动记录):

 $ gem uninstall pg
 $ gem uninstall activerecord-postgresql-adapter
 $ bundle install

这是因为以前的服务器仍在运行,请尝试关闭所有内容并重新运行应用程序。


对我来说,是apache升级导致了这个问题。我仍然可以在控制台运行psql或直接从kdevelop调用db。此外,它还将“host=localhost”添加到连接字符串中。

但真正的问题是apache已经变成了private tmp。

解决方法:更新/usr/lib/systemd/system/apache2.将“PrivateTmp=true”修改为“PrivateTmp=false”。

我在OpenSuse OS上工作,但我猜类似的事情可能会发生在Mac上。


在MacOS Sierra上也遇到了这个问题,当我们如上所述运行pg_ctl时,我们有以下错误pg_ctl:没有指定数据库目录,环境变量PGDATA未设置。所以我们按照这里的步骤解决了我们的问题,即:

mkdir ~ / .postgres

initdb ~/.postgres

pg_ctl -D ~/。postgres开始


最愚蠢的方法就是去做

brew reinstall postgresql

这将保持你的用户权限等所有完好无损,一切重置为新的。一直都管用!


对于那些使用此命令但不起作用或文件不存在并且正在使用Ruby on Rails的人

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

或者其他命令,然后一直失败。

我用Brew解决了这个卸载问题。 我不得不用brew卸载2次,因为在第一次卸载时,会保留另一个版本的postgresql,第二次卸载过程将完成。

使用Brew安装postgresql

然后删除、创建和迁移项目的数据库

(不要忘记启动postgresql服务器)


如果使用brew安装和卸载postgresql不适合你,请查看postgresql安装的日志或:

postgres -D /usr/local/var/postgres

如果你看到这样的输出:

LOG:  skipping missing configuration file "/usr/local/var/postgres/postgresql.auto.conf"
FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.4, which is not compatible with this version 9.6.1.

然后试试下面的方法:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

然后启动服务器:

pg_ctl -D /usr/local/var/postgres -l logfile start


如果postgres是用自制程序安装的,你可以通过运行:

brew link postgres

brew services start postgres 

为我工作!


这实际上是你应该做的:

您应该查看/usr/local/var/postgres/postmaster.pid

然后看文件的第一行——这是坏的PID

Run

ps aux | grep <PID>

例如:

ps aux | grep 12345

然后做

kill <PID>

例如

kill 12345

假设它还在运行

https://superuser.com/questions/553045/fatal-lock-file-postmaster-pid-already-exists

不要听公认的答案,这是不好的,会破坏你的数据!!


我使用Bitnami堆栈,并以非根用户psql安装。在使用psql时,我确实收到了提到的错误。

事实证明,psql有两个版本

Linux发行版中预先打包的根级PSQL。它指向/usr/bin/psql Bitnami堆栈安装的非根级别psql。指向/bitnami/postgresql/postgresql/bin/psql

您可能希望更改psql的别名,以便它指向非根用户。

alias psql='/bitnami/postgresql/postgresql/bin/psql'

上面的工作为我做psql -U postgres


The data directory contains an old postmaster.pid file / The data directory contains an unreadable postmaster.pid file PostgreSQL puts a file named postmaster.pid in the data directory to store the process id of the PostgreSQL server process. If PostgreSQL crashes, this file can contain an old pid that confuses PostgreSQL. You can fix this issue by deleting the postmaster.pid file. However, you must make sure that PostgreSQL is really not running. Open Activity Monitor and make sure that there are no processes named ‘postgres’ or ‘postmaster’.

如果你删除了邮政局长。pid文件在PostgreSQL运行时,不好的事情会发生。

来源:https://postgresapp.com/documentation/troubleshooting.html


我有同样的问题,因为我在代码中使用了错误的Postgres的用户名。我登录到postgres psql -d postgres,并输入\du以获取角色名并更正postgres的用户名。

所以当你遇到这个问题时,你需要确保你使用了正确的Postgres用户名,密码,主机名和数据库…

希望这对大家有所帮助


你最近是否修改了pg_hba.conf?如果你只是检查了任何拼写错误:

"local"仅用于Unix域套接字连接

本地全部全部密码

IPv4本地连接:

主机所有所有的127.0.0.1/32密码

IPv6本地连接:

主机全部全部::1/128密码

有时一个简单的错误就能让我们头疼。我希望这对你有帮助,如果我的英语不好,我很抱歉。


如果您在升级Postgres时(或升级后)遇到此问题,请按照这里提到的步骤在不同版本之间安全传输数据,这将解决该问题:

使用Homebrew (macOS)将PostgreSQL 9.6.5升级到10.0


这发生在postgres服务器未运行时。 通过Homebrew在MAC上正确安装Postgres的步骤:

酿造安装postgres initdb /Users/<username>/db -E utf8 .使用实例 初始化postgres以使用给定的目录作为数据库目录。一般情况下,不建议使用用户目录存储数据库。编辑sudoers文件添加initdb和类似命令,然后在/usr/local/var/postgres上运行initdb] pg_ctl -D /Users/<username>/db -l logfile start . pg_ctl -D /Users/<username [在步骤2成功后,它将提示运行步骤3。该命令用于手动启动服务器。


升级数据库对我有用

酿造postgresql-upgrade-database


这对我来说很管用(混合了之前的答案):

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

$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

来源:https://coderwall.com/p/zf-fww/postgres-on-osx-with-homebrew-not-running-after-osx-crash


这个问题是因为端口5432上已经有一个正在运行的服务,我们不能通过这个端口建立psql套接字连接。

我删除了套接字文件

rm -rf /tmp/.s.PGSQL.5432/

然后我重新初始化postgres服务

postgres -D /usr/local/var/postgres

这对我很管用。


其中一个原因将是确保磁盘的大小没有满 执行命令postmaster -D postgres路径


这个问题也可以归因于一个崩溃的进程,使邮政总局。Pid文件后面。 我的工作是:

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql

我在编写psql (PostgreSQL) 9.6.11时遇到了同样的问题。

什么对我有用?

删除邮政局长。Pid——rm /usr/local/var/postgresql@9.6/postmaster.pid

重启postgres——brew服务重启postgresql@9.6

如果这也不起作用,那么运行—— Sudo chmod 700 /usr/local/var/postgresql@9.6


我发现在安装最新的Postgres 9.6补丁后,我所有的可执行文件(Postgres, psql, pg_dump, pg_restore等)都被删除了,我必须重新链接它们。幸运的是,Homebrew可以为您做到这一点:

brew link --force postgresql # (or in my case, `postgresql@9.6`)

对于我们来说,我们必须在psql命令中定义localhost,如下所示:

psql -h localhost -U postgres

不确定为什么-h不默认为localhost…


如果关闭系统而不退出psql, postgres将不会删除一些文件。

我没找到文件,邮政局长。Pid在usr/local/var/postgres位置

所以我做了以下事情:

Brew服务启动postgresql

上面的命令应该允许您启动postgres


所以我在这之后,rails db:create命令。在macOS Catalina 10.15.3中设置环境。

我首先检查的是让我来这里的气流。在确保所有事情都顺利进行,没有任何错误,可能逃过了我的脑海,我尝试了最流行的解决方案,但似乎没有一个工作。

到目前为止,我看到的唯一错误是

$ psql psql:无法连接到服务器:没有这样的文件或目录是服务器正在本地运行,并接受连接Unix域套接字"/tmp/.s.PGSQL.5432"?

所以我需要一些关于正在发生的事情的更具体的信息。由于这个原因,我决定看看postgres日志文件位于

/ usr / local / var / log / postgres日志。

所以在打开日志后,我看到了这个错误

日志:在x86_64-apple-darwin19.3.0上启动PostgreSQL 12.2,由Apple clang版本11.0.0 (clang-1100.0.33.17)编译,64位日志:不能翻译主机名“localhost”,服务“5432”到地址:nodename或servname提供,或不知道WARNING:不能创建监听套接字为“localhost”FATAL:不能创建任何TCP/IP套接字LOG:数据库系统关闭

这就更有解释性,更具体了。问题是PostgreSQL不能“看到”并解析本地主机服务器。

所以接下来我做的事情是检查/etc/hosts文件,它的默认内容应该是这样的:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1          localhost 

在与我的比较后,我看到在我的这一行是不同的,并评论(!)。

#::1             localhost

所以我删除了#符号在前面的行保存文件,并重新运行

rails db:create 

数据库启动成功。


我必须修复一个目录的权限:

sudo chmod 0750 /usr/local/var/postgres

Try

sudo systemctl start postgresql@12-main

这里我的postgresql版本是12。


我有2个版本的PostgreSQL,同时运行brew services list

Name           Status  User           Plist
consul         stopped                
docker-machine stopped                
mysql          stopped                
postgresql     started homebrew.mxcl.postgresql.plist
postgresql@9.6 stopped                
redis          stopped                
runit          stopped                
unbound        stopped                
vault          stopped 

并且刚刚启动了其他版本的brew服务,启动postgresql@9.6


在我的情况下,我正在使用docker-compose运行其他项目,我必须用sudo service postgresql stop && docker-compose up -d postgres && docker-compose up rails停止postgresql

为了在我的新项目中修复这个错误,我只需要运行:sudo service postgresql restart,然后它就修复了它。


我有macOS Catalina(10.15.6)和PostgreSQL 12。

当我运行brew服务启动postgresql时,brew说它启动postgresql没有问题,但它不显示当我得到ps auxw | grep post时。

为了解决这个问题,我安装了Postgres。安装并按Init按钮。

它会找到你的数据库并显示给你。


我也有同样的问题。升级DB成功了! postgresql-upgrade-database


在我的例子中,问题是由Mac OS更新引起的。升级PostgreSQL解决了这个问题。

# upgrade database version solved the trouble
$ brew postgresql-upgrade-database

然而,这个错误是很常见的,有多种可能的原因,你不应该完全依赖我上面的解决方案。


MacOS Big Sur似乎重命名了Application\ Support文件夹为ApplicationSupport。因此,更新后的路径将是:

/Users/<USERNAME>/Library/ApplicationSupport/Postgres/var-10 
(or "/var-<YOUR PG VERSION>")

我只是重新启动postgres:

brew services restart postgresql

没有必要删除postmaster.pid。


我在我的MacBook M1 (Air)上做一个项目,打开了一些标签页,突然我的Postgres服务器停止了,并开始给出以下错误:

psql: cannot connect to server:连接失败 服务器是否在本地运行并接受Unix域套接字"/tmp/.s.PGSQL.5432"上的连接

我尝试了很多解决方案,比如;

更新brew和Postgres。 重新启动服务器。 试图从命令行终止进程。

但遗憾的是,我什么都不管用。

最后,我想重新启动我的mac。令我惊讶的是,postgres服务器开始工作的方式和以前一样好。我想一定是Postgres目录出了问题。但我很高兴,它起作用了。

我建议您在重新启动之前先检查一下上述选项。

谢谢。


对于MacOS BigSur,自制的postgres:

rm / opt /组装/ var / postgres / postmaster.pid Brew服务重启postgresql


这招对我很管用: rm /usr/local/var/postgres/postmaster.pid


如果你在M1 mac上安装了带有M1版本homebrew的postgresql,这应该可以工作:

$ rm /opt/homebrew/var/postgres/postmaster.pid
$ brew services restart postgresql

这对我很管用。我不需要删除任何文件

酿造postgresql-upgrade-database


对于Mac OS Catalina,这是可行的

$ rm /usr/local/var/postgres/postmaster.pid
$ brew services restart postgresql

这就是它如何在我的MacOS上为我修复这个错误(我使用自制程序安装postgres):

> cd /opt/homebrew/var
> rm -rf postgres
> initdb ./postgres -E utf8
> pg_ctl -D ./postgres -l logfile start
> rm postgres/postmaster.pid
> brew services restart postgresql
> createdb $(whoami)

对于macOS Monterey,我使用brew服务重新启动postgresql。

brew install postgresql
createdb mydb
createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
    Is the server running locally and accepting connections on that socket?

brew services restart PostgreSQL
==> Successfully started `postgresql` (label: homebrew.mxcl


对我来说最有效的方法是:

找到已经在为postgres配置的端口中运行的postgres进程

lsof -i:5432

找到postgres的进程id并杀死它们

kill -9 <pid>

MacOS M1 Monterey的解决方案

rm /opt/homebrew/var/postgres/postmaster.pid
brew services restart postgresql

我也遇到过同样的问题,但解决办法不管用。 我终于通过更新我的postgres db修复了它:

brew postgresql-upgrade-database

当我开始课程时,他们提到我需要set_pg,所以我每次创建一个新的终端窗口时都需要这样做

$set_pg

我在ubuntu中通过简单地重新盯着电脑解决了这个问题。 在我的案例中,这个问题的原因是postgres没有优雅地停止(通过sudo kill)。


MacOS Monterey和Postgresql@14(路径不同): rm /usr/local/var/postgresql@14 / postmaster.pid Brew服务重启postgresql


对我来说,使用brew升级效果很好。

配置:Mac OS - Monterey M1

brew postgresql-upgrade-database

我几乎尝试了所有这些答案,这就是最终让我开始postgres的方法

跟踪日志中的postgres。 路径需要根据postgres的安装位置和您的版本进行更新。我在m1 Monterey上使用postgresql@14,并安装了自制软件。 我终于找到了使用这篇文章所需要的路径。 尾/ opt /组装/ var / log / postgresql@14.log

输出显示:

2023-02-03 15:33:49.294 CST [82651] FATAL:  could not open directory "pg_notify": No such file or directory
2023-02-03 15:33:49.294 CST [82651] LOG:  database system is shut down

go to the / directory and cd opt/homebrew/var/postgresql@14 create the missing directory (maybe this is a different directory for you) mkdir pg_notify repeat this process for all missing directories. I needed to mkdir for pg_tblspc, pg_replslot, pg_twophase, pg_stat_tmp, pg_logical/snapshots, pg_logical/mappings, pg_commit_ts, pg_snapshots, & pg_commit_ts but i recommend you specifically run the tail command each time to make sure you are not missing different directories & files than me.

最后,在创建每个丢失的目录后反复运行tail命令,得到以下输出。

2023-02-03 15:49:18.909 CST [85772] LOG:  redo done at 0/17211D8 system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s
2023-02-03 15:49:18.914 CST [85771] LOG:  database system is ready to accept connections