主机 "localhost" (::1) 上的服务器 运行 是否在端口 5432 上接受 TCP/IP 连接?
Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432?
首先请注意,我在 Stack Overflow 和网络上的文章中发现了几个类似的问题,但是 none 帮助我解决了我的问题:
- PG Error could not connect to server: Connection refused Is the server running on port 5432?
- PG::ConnectionBad - could not connect to server: Connection refused
- psql: could not connect to server: Connection refused
现在,问题来了:
- 我有一个 Rails 应用程序,非常有用。
- 和我的合作者,我们用GitHub一起工作。
- 我们有一个
master
和一个 mvp
分支。
- 我最近用 Homebrew (Mac) 更新了我的
git
版本。
- 我们使用 Foreman 在本地启动我们的应用程序。
现在,当我尝试在本地启动应用程序时,出现以下错误:
PG::ConnectionBad at /
could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
我多次尝试重启计算机。
我也查看了/usr/local/var/postgres
的内容:
PG_VERSION pg_dynshmem pg_multixact pg_snapshots pg_tblspc postgresql.conf
base pg_hba.conf pg_notify pg_stat pg_twophase postmaster.opts
global pg_ident.conf pg_replslot pg_stat_tmp pg_xlog server.log
pg_clog pg_logical pg_serial pg_subtrans postgresql.auto.conf
如您所见,那里没有 postmaster.pid
文件。
知道如何解决这个问题吗?
您很可能 运行 电池没电了,您的 postgresql 服务器没有正确关闭。
最简单的解决方法是下载官方 postgresql 应用程序并启动它:它会强制启动服务器 (http://postgresapp.com/)
postgresql 服务器可能已关闭,解决方案可能很简单 运行:
sudo service postgresql start
为我解决了这个问题。
这对我有效:
brew uninstall postgresql
rm -fr /usr/local/var/postgres/
brew install postgresql
运行 postgres -D /usr/local/var/postgres
你应该会看到如下内容:
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 379) running in data directory "/usr/local/var/postgres"?
然后 运行 kill -9 PID
在 HINT
你应该可以开始了。
我经常在windows上遇到这个问题,我解决问题的方法是服务-点击PostgreSQL数据库服务器8.3-点击第二个选项卡"log in"-选择第一行"the local system account".
这对我有用:
运行
sudo lsof -i :<port_number>
之后它将显示当前附加到进程的 PID。
之后运行sudo kill -9 <PID>
如果这不起作用,
试试 user8376606 提供的解决方案,肯定有用!
如果你想在 Linux 上重启 Postgresql,那么你必须使用以下命令。
/etc/init.d/postgresql restart
很可能是因为您的系统意外关机
尝试
postgres -D /usr/local/var/postgres
您可能会看到
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 449) running in data directory "/usr/local/var/postgres"?
那就试试
kill -9 PID
例子
kill -9 419
它应该可以正常启动 postgres
这可能是为 postgres 创建的 pid 文件由于意外关闭而没有被删除造成的。要解决此问题,请删除此 pid 文件。
找到 postgres 数据目录。在使用自制程序的 MAC 上它是 /usr/local/var/postgres/
,在其他系统上它可能是 /usr/var/postgres/
通过 运行ning 删除 pid 文件:
rm postmaster.pid
重新启动 postgress。在 Mac、运行 上:
brew services restart postgresql
我通过这个命令解决了这个问题
pg_ctl -D /usr/local/var/postgres start
有时,您可能会遇到此错误
pg_ctl: another server might be running; trying to start server anyway
因此,请尝试 运行 执行以下命令,然后 运行 执行上面给出的第一个命令。
pg_ctl -D /usr/local/var/postgres stop
我在 Rails 应用程序 运行 postgresql(mac) 上的 Ruby 几乎遇到了同样的错误。这对我有用:
brew services restart postgresql
首先我尝试了
lsof -wni tcp:5432
but it doesn't show any PID number.
第二次我尝试了
Postgres -D /usr/local/var/postgres
and it showed that server is listening.
所以我刚刚重新启动了我的 mac 以恢复所有端口,它对我有用。
致 Docker 用户:我的情况是 docker 图片尺寸过大造成的。您可以使用 prune
命令删除未使用的数据:
docker system prune --all --force --volumes
警告: 根据手册 (docker system prune --help
):
This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
如果你只是停止你的 PostgreSQL 应用程序,它也会给出同样的错误。你只需要重新启动它。 (PostgreSQL 11)
我遇到了同样的问题,我无法启动 postgresql 服务器,即使在输入密码后也无法访问我的数据库,我已经尝试了所有可能的方法。
这个解决方案对我有用,
对于 Ubuntu 用户:
通过命令行,键入以下命令:
1.service --status-all(给出所有服务及其状态的列表。其中“+”指的是运行,“-”指的是服务不再是运行)
检查 postgresql 状态,如果是“-”则输入以下命令
2.systemctl 启动 postgresql(再次启动服务器)
在浏览器中刷新 postgresql 页面,成功了
对于 Windows 用户:
搜索服务,我们可以在其中看到服务列表,然后右键单击 postgresql,单击启动,服务器运行正常。
就我而言
- 我已经更改了 postgresql.conf 文件中的端口
- 并在
中重启 postgresql 服务
运行 => service.msc => 重启
- 现在重试
第 1 步:
cd /etc/postgresql/12/main/
打开名为 postgresql.conf
的文件
sudo nano postgresql.conf
将此行添加到该文件
listen_addresses = '*'
然后打开名为 pg_hba.conf
的文件
sudo nano pg_hba.conf
并将此行添加到该文件
host all all 0.0.0.0/0 md5
它允许所有用户使用加密密码访问所有数据库
重启服务器
sudo /etc/init.d/postgresql restart
我在尝试将我的 Django 应用程序连接到 PostgreSQL 数据库时遇到了类似的问题。
我在 Dockerfile
中写了设置 Django 项目的说明,然后是安装 PostgreSQL 和 [=56] 的说明=] Django 服务器在我的 docker-compose.yml
.
我在 docker-compose-yml
中定义了两个服务。
services:
postgres:
image: "postgres:latest"
environment:
- POSTGRES_DB=abc
- POSTGRES_USER=abc
- POSTGRES_PASSWORD=abc
volumes:
- pg_data:/var/lib/postgresql/data/
django:
build: .
command: python /code/manage.py runserver 0.0.0.0:8004
volumes:
- .:/app
ports:
- 8004:8004
depends_on:
- postgres
不幸的是,每当我以前 运行 docker-compose up
然后同样的错误。用于弹出。
这就是我的数据库在 Django settings.py
.
中的定义方式
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'abc',
'USER': 'abc',
'PASSWORD': 'abc',
'HOST': '127.0.0.1',
'PORT': '5432',
'OPTIONS': {
'client_encoding': 'UTF8',
},
}
}
所以,最后我使用了 docker-compose
networking 这意味着如果我将数据库的 host
更改为定义为服务的 postgres
在 docker-compose.yml
会创造奇迹。
所以,替换 'HOST': '127.0.0.1'
=> 'HOST': 'postgres'
给我带来了奇迹。
替换后,settings.py
中的数据库配置将如下所示。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'abc',
'USER': 'abc',
'PASSWORD': 'abc',
'HOST': 'postgres',
'PORT': '5432',
'OPTIONS': {
'client_encoding': 'UTF8',
},
}
}
在我的例子中,我忘记将数据库从 postgres(在我的产品中)更改回我用于开发的 sqlite3。
它对我有用 >>Node.Js 应用程序
user@MacBook-Pro % sudo lsof -i :5430
输出
COMMAND PID user FD TYPE DEVICE SIZE/OFF NODE NAME
节点 7885 用户 21u IPv6 0x2e7d89f6118f95b9 0t0 TCP *:radec-corp (LISTEN)
杀死PID
user@MacBook-Pro % sudo kill -9 7885
再测试一次
user@MacBook-Pro % sudo lsof -i :5430
user@MacBook-Pro % “端口 5430 不再有 运行 PID”
这就是我解决问题的方法:
查看服务状态
brew services list
输出为:
Name Status User Plist
postgresql error myuser /Users/myuser/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
unbound stopped
我改了这个路径下的文件名,你也可以去掉
mv /Users/myuser/Library/LaunchAgents/homebrew.mxcl.postgresql.plist /Users/myuser/Library/LaunchAgents/homebrew.mxcl.postgresql.plist_temp
然后重启 os
sudo reboot
启动后我启动了 postgresql
并且成功了。
brew services start postgresql
- 找到postgresql@10服务目录
$ ls /usr/local/var/postgresql@10
- 查找文件
postmaster.pid
并删除该文件
$ rm -f postmaster.pid
- 使用
重新启动 postgres 服务
$ brew services restart postgresql@10
就我而言,在 Rails 项目的 Ruby 上,我从文件夹 tmp/pids
中删除了一个 .pid 文件并重新启动系统。
有同样的问题。我检查了我的 database.yml 文件(开发模式)主机是否指向 5433。我将其更新为 5432 并且它有效。
在我的例子中,PostgreSQL 在后台从版本 13.4
更新到 14
,因此它通过以下方式修复:
brew postgresql-upgrade-database
在其他情况下,问题已解决:
rm -rf /usr/local/var/postgres/postmaster.pid
重启服务postgresql
:
brew services restart postgresql
你怎么理解问题是什么?
先看看是什么服务没有正确启动:
brew services list
第二个显示文件postgres.log
,哪里会有错误:
tail -f /usr/local/var/log/postgres.log
所以通过这个错误的文本找到答案
首先请注意,我在 Stack Overflow 和网络上的文章中发现了几个类似的问题,但是 none 帮助我解决了我的问题:
- PG Error could not connect to server: Connection refused Is the server running on port 5432?
- PG::ConnectionBad - could not connect to server: Connection refused
- psql: could not connect to server: Connection refused
现在,问题来了:
- 我有一个 Rails 应用程序,非常有用。
- 和我的合作者,我们用GitHub一起工作。
- 我们有一个
master
和一个mvp
分支。 - 我最近用 Homebrew (Mac) 更新了我的
git
版本。 - 我们使用 Foreman 在本地启动我们的应用程序。
现在,当我尝试在本地启动应用程序时,出现以下错误:
PG::ConnectionBad at /
could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
我多次尝试重启计算机。
我也查看了/usr/local/var/postgres
的内容:
PG_VERSION pg_dynshmem pg_multixact pg_snapshots pg_tblspc postgresql.conf
base pg_hba.conf pg_notify pg_stat pg_twophase postmaster.opts
global pg_ident.conf pg_replslot pg_stat_tmp pg_xlog server.log
pg_clog pg_logical pg_serial pg_subtrans postgresql.auto.conf
如您所见,那里没有 postmaster.pid
文件。
知道如何解决这个问题吗?
您很可能 运行 电池没电了,您的 postgresql 服务器没有正确关闭。
最简单的解决方法是下载官方 postgresql 应用程序并启动它:它会强制启动服务器 (http://postgresapp.com/)
postgresql 服务器可能已关闭,解决方案可能很简单 运行:
sudo service postgresql start
为我解决了这个问题。
这对我有效:
brew uninstall postgresql
rm -fr /usr/local/var/postgres/
brew install postgresql
运行 postgres -D /usr/local/var/postgres
你应该会看到如下内容:
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 379) running in data directory "/usr/local/var/postgres"?
然后 运行 kill -9 PID
在 HINT
你应该可以开始了。
我经常在windows上遇到这个问题,我解决问题的方法是服务-点击PostgreSQL数据库服务器8.3-点击第二个选项卡"log in"-选择第一行"the local system account".
这对我有用: 运行
sudo lsof -i :<port_number>
之后它将显示当前附加到进程的 PID。
之后运行sudo kill -9 <PID>
如果这不起作用, 试试 user8376606 提供的解决方案,肯定有用!
如果你想在 Linux 上重启 Postgresql,那么你必须使用以下命令。
/etc/init.d/postgresql restart
很可能是因为您的系统意外关机
尝试
postgres -D /usr/local/var/postgres
您可能会看到
FATAL: lock file "postmaster.pid" already exists HINT: Is another postmaster (PID 449) running in data directory "/usr/local/var/postgres"?
那就试试
kill -9 PID
例子
kill -9 419
它应该可以正常启动 postgres
这可能是为 postgres 创建的 pid 文件由于意外关闭而没有被删除造成的。要解决此问题,请删除此 pid 文件。
找到 postgres 数据目录。在使用自制程序的 MAC 上它是
/usr/local/var/postgres/
,在其他系统上它可能是/usr/var/postgres/
通过 运行ning 删除 pid 文件:
rm postmaster.pid
重新启动 postgress。在 Mac、运行 上:
brew services restart postgresql
我通过这个命令解决了这个问题
pg_ctl -D /usr/local/var/postgres start
有时,您可能会遇到此错误
pg_ctl: another server might be running; trying to start server anyway
因此,请尝试 运行 执行以下命令,然后 运行 执行上面给出的第一个命令。
pg_ctl -D /usr/local/var/postgres stop
我在 Rails 应用程序 运行 postgresql(mac) 上的 Ruby 几乎遇到了同样的错误。这对我有用:
brew services restart postgresql
首先我尝试了
lsof -wni tcp:5432 but it doesn't show any PID number.
第二次我尝试了
Postgres -D /usr/local/var/postgres and it showed that server is listening.
所以我刚刚重新启动了我的 mac 以恢复所有端口,它对我有用。
致 Docker 用户:我的情况是 docker 图片尺寸过大造成的。您可以使用 prune
命令删除未使用的数据:
docker system prune --all --force --volumes
警告: 根据手册 (docker system prune --help
):
This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
如果你只是停止你的 PostgreSQL 应用程序,它也会给出同样的错误。你只需要重新启动它。 (PostgreSQL 11)
我遇到了同样的问题,我无法启动 postgresql 服务器,即使在输入密码后也无法访问我的数据库,我已经尝试了所有可能的方法。
这个解决方案对我有用,
对于 Ubuntu 用户: 通过命令行,键入以下命令:
1.service --status-all(给出所有服务及其状态的列表。其中“+”指的是运行,“-”指的是服务不再是运行)
检查 postgresql 状态,如果是“-”则输入以下命令
2.systemctl 启动 postgresql(再次启动服务器)
在浏览器中刷新 postgresql 页面,成功了
对于 Windows 用户:
搜索服务,我们可以在其中看到服务列表,然后右键单击 postgresql,单击启动,服务器运行正常。
就我而言
- 我已经更改了 postgresql.conf 文件中的端口
- 并在 中重启 postgresql 服务
运行 => service.msc => 重启
- 现在重试
第 1 步:
cd /etc/postgresql/12/main/
打开名为 postgresql.conf
sudo nano postgresql.conf
将此行添加到该文件
listen_addresses = '*'
然后打开名为 pg_hba.conf
sudo nano pg_hba.conf
并将此行添加到该文件
host all all 0.0.0.0/0 md5
它允许所有用户使用加密密码访问所有数据库
重启服务器
sudo /etc/init.d/postgresql restart
我在尝试将我的 Django 应用程序连接到 PostgreSQL 数据库时遇到了类似的问题。
我在 Dockerfile
中写了设置 Django 项目的说明,然后是安装 PostgreSQL 和 [=56] 的说明=] Django 服务器在我的 docker-compose.yml
.
我在 docker-compose-yml
中定义了两个服务。
services:
postgres:
image: "postgres:latest"
environment:
- POSTGRES_DB=abc
- POSTGRES_USER=abc
- POSTGRES_PASSWORD=abc
volumes:
- pg_data:/var/lib/postgresql/data/
django:
build: .
command: python /code/manage.py runserver 0.0.0.0:8004
volumes:
- .:/app
ports:
- 8004:8004
depends_on:
- postgres
不幸的是,每当我以前 运行 docker-compose up
然后同样的错误。用于弹出。
这就是我的数据库在 Django settings.py
.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'abc',
'USER': 'abc',
'PASSWORD': 'abc',
'HOST': '127.0.0.1',
'PORT': '5432',
'OPTIONS': {
'client_encoding': 'UTF8',
},
}
}
所以,最后我使用了 docker-compose
networking 这意味着如果我将数据库的 host
更改为定义为服务的 postgres
在 docker-compose.yml
会创造奇迹。
所以,替换 'HOST': '127.0.0.1'
=> 'HOST': 'postgres'
给我带来了奇迹。
替换后,settings.py
中的数据库配置将如下所示。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'abc',
'USER': 'abc',
'PASSWORD': 'abc',
'HOST': 'postgres',
'PORT': '5432',
'OPTIONS': {
'client_encoding': 'UTF8',
},
}
}
在我的例子中,我忘记将数据库从 postgres(在我的产品中)更改回我用于开发的 sqlite3。
它对我有用 >>Node.Js 应用程序
user@MacBook-Pro % sudo lsof -i :5430
输出
COMMAND PID user FD TYPE DEVICE SIZE/OFF NODE NAME
节点 7885 用户 21u IPv6 0x2e7d89f6118f95b9 0t0 TCP *:radec-corp (LISTEN)
杀死PID
user@MacBook-Pro % sudo kill -9 7885
再测试一次
user@MacBook-Pro % sudo lsof -i :5430
user@MacBook-Pro % “端口 5430 不再有 运行 PID”
这就是我解决问题的方法:
查看服务状态
brew services list
输出为:
Name Status User Plist
postgresql error myuser /Users/myuser/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
unbound stopped
我改了这个路径下的文件名,你也可以去掉
mv /Users/myuser/Library/LaunchAgents/homebrew.mxcl.postgresql.plist /Users/myuser/Library/LaunchAgents/homebrew.mxcl.postgresql.plist_temp
然后重启 os
sudo reboot
启动后我启动了 postgresql
并且成功了。
brew services start postgresql
- 找到postgresql@10服务目录
$ ls /usr/local/var/postgresql@10
- 查找文件
postmaster.pid
并删除该文件
$ rm -f postmaster.pid
- 使用 重新启动 postgres 服务
$ brew services restart postgresql@10
就我而言,在 Rails 项目的 Ruby 上,我从文件夹 tmp/pids
中删除了一个 .pid 文件并重新启动系统。
有同样的问题。我检查了我的 database.yml 文件(开发模式)主机是否指向 5433。我将其更新为 5432 并且它有效。
在我的例子中,PostgreSQL 在后台从版本 13.4
更新到 14
,因此它通过以下方式修复:
brew postgresql-upgrade-database
在其他情况下,问题已解决:
rm -rf /usr/local/var/postgres/postmaster.pid
重启服务postgresql
:
brew services restart postgresql
你怎么理解问题是什么?
先看看是什么服务没有正确启动:
brew services list
第二个显示文件postgres.log
,哪里会有错误:
tail -f /usr/local/var/log/postgres.log
所以通过这个错误的文本找到答案