Postgres无法连接到服务器

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

这是错误消息。(我也得到了这个错误信息,当我尝试做rake db:migrate)

$ 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

postgres版本: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"?

现在,在我重新安装自制程序后,当我使用$ 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
547209 次浏览

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

$ 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,你可能需要host: localhost在你的database.yml。# EYZ1

的原因

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

通过

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

更改postresql或数据库。yml配置设置、更改$PATH或创建符号链接对我来说都是不必要的。我所需要做的就是gem uninstall pgbundle(或gem install pg)。

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

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

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

然后一切都好了。


更新:

对于苹果M1 (Big Sur)用户,可以这样做:

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

# EYZ0 # EYZ1 # EYZ2

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

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

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

  1. 关闭所有其他访问进程rails serverrails consoleguard等…
  2. 使用brew info postgres中的命令加载/卸载
  3. 运行restore/drop/create from before

Psql选项

< p > - h主机名 ——主机=主机名< / p >

:服务器正在运行的机器的主机名。 如果该值以斜杠开头,则用作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宝石版本。在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 /自制程序:

尝试运行postgres -D /usr/local/var/postgres——如果postgres启动失败,它将为您提供更详细的输出。或者打开日志文件/usr/local/var/log/postgres.log (Mac M1上的/opt/homebrew/var/log/postgres.log)并查找行“致命:数据库文件与服务器不兼容”;

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

感谢https://github.com/Homebrew/homebrew/issues/35240提供的解决方案。彻底重新安装的完整说明可以在这里找到:如何完全卸载和重新安装自制Postgres -测试双博客(同样,如果你在M1 Mac上,然后替换/ opt /组装/ var路径,无论它说/usr/local/var)

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

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

安装完成后只需两步即可运行数据库(在此之前确保您的登录用户为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 < a href = " 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,如下所示:

停止postgres

$ 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: no database directory specified and environment variable PGDATA unset。所以我们遵循了解决问题的步骤在这里,即:

# EYZ0

# EYZ0

# EYZ0

最愚蠢的方法就是去做

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

Source .

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

brew link postgres
brew services start postgres

为我工作!

这实际上是你应该做的:

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

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

运行

ps aux | grep <PID>

例如:

ps aux | grep 12345

然后做

kill <PID>

例如

kill 12345

假设它还在运行

https://superuser.com/questions/553045/fatal-lock-file-postmaster-pid-already-exists < a href = " https://superuser.com/questions/553045/fatal-lock-file-postmaster-pid-already-exists " > < / >

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

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

事实证明,psql有两个版本

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

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

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

上面的方法在我做psql -U postgres时很有效

data目录包含一个旧的邮政局长。pid文件/ data目录中包含一个不可读的postmaster. pid文件。pid文件 PostgreSQL放置一个名为postmaster的文件。在“data”目录下执行“pid”,用于保存PostgreSQL服务器进程的进程号。如果PostgreSQL崩溃,这个文件可以包含一个旧的pid,使PostgreSQL混乱。您可以通过删除邮政管理员来解决此问题。pid文件。但是,你必须确保PostgreSQL真的没有运行。打开活动监视器,确保没有名为' postgres '或' postmaster '的进程

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

来源:# EYZ0

我有同样的问题,因为我在代码中使用了错误的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服务器没有运行时发生。 在MAC上通过Homebrew正确安装Postgres的步骤:

  1. # EYZ0

  2. <李> < p > # EYZ0 初始化postgres以使用给定的目录作为数据库目录。一般情况下,不建议使用用户目录存储数据库。编辑sudoers文件添加initdb和类似命令,然后在/usr/local/var/postgres上执行initdb

    <李> < p > # EYZ0 [在步骤2成功后,它将提示运行步骤3。[/p> .

升级数据库对我有用

< p > <代码> 酿造postgresql-upgrade-database < /代码> < / p >

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

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


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

来源:# EYZ0

这个问题是因为端口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 services restart postgresql@9.6

如果这也不工作,然后运行—— # EYZ0 < / p >

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

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

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

# EYZ0

不知道为什么-h不默认为localhost

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

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

所以我做了以下事情:

Brew服务启动postgresql

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

所以我在使用rails db:create命令后发现了这一点。在macOS Catalina 10.15.3中设置环境。

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

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

# EYZ0

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

# EYZ0

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

# EYZ0

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

所以接下来我做的事情是检查/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

试一试

sudo systemctl start postgresql@12-main

这里我的postgresql版本是12。

我有两个版本的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 services start postgresql@9.6

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

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

我有macOS Catalina(10.15.6)和PostgreSQL 12。

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

为了解决这个问题,我从这个链接安装Postgres.app,安装并按Init按钮。

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

有同样的问题。升级DB成功了! # EYZ0 < / p >

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

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

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

MacOS大苏尔似乎将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: could not connect to server:连接失败 服务器是否正在本地运行并接受Unix域套接字上的连接"/tmp/. s.p pgsql .5432"

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

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

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

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

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

谢谢。

对于MacOS BigSur,自制postgres:

  • # EYZ0
  • # EYZ0
这对我很有用: # EYZ0 < / p >

如果你在M1 mac上,并且你用M1版本的自制安装了postgresql,这应该可以工作:

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

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

# EYZ0

对于Mac OS Catalina,这是可行的

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

这就是它如何在我的MacOS上为我修复这个错误(我使用homebrew安装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 services restart 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


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

  1. 找到已经在为postgres配置的端口中运行的postgres进程
lsof -i:5432
  1. 找到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(路径不同):
# EYZ0
# EYZ0 < / p >

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

  • 配置:# EYZ0
brew postgresql-upgrade-database