![](/img/trans.png)
[英]psql: could not connect to server: Connection refused Is the server running on host “localhost” (::1) and accepting TCP/IP connections on port 5432?
[英]Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432?
首先,请注意,我在 Stack Overflow 和 web 上的文章中发现了几个类似的问题,但这些都没有帮助我解决问题:
现在,问题来了:
master
和一个mvp
分支。git
版本。现在,当我尝试在本地启动应用程序时,出现以下错误:
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
文件。
知道我该如何解决这个问题吗?
运行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"?
然后在 HINT 中运行kill -9 PID
你应该很高兴去。
您很可能没电了,并且您的 postgresql 服务器没有正确关闭。
最简单的解决方法是下载官方 postgresql 应用程序并启动它:它会强制服务器启动( http://postgresapp.com/ )
很可能是因为您的系统意外关闭
试试
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
postgresql 服务器可能已关闭,解决方案可能与运行一样简单:
sudo service postgresql start
这为我解决了这个问题。
这可能是由于为 postgres 创建的 pid 文件由于意外关闭而未被删除造成的。 要解决此问题,请删除此 pid 文件。
找到 postgres 数据目录。 在使用自制软件的 MAC 上,它是/usr/local/var/postgres/
,其他系统可能是/usr/var/postgres/
通过运行删除 pid 文件:
rm postmaster.pid
重新启动 postgress。 在 Mac 上,运行:
brew services restart postgresql
我的 Ruby on Rails 应用程序在运行 postgresql(mac) 时遇到了几乎同样的错误。 这对我有用:
brew services restart postgresql
这在我的情况下有效:
brew uninstall postgresql
rm -fr /usr/local/var/postgres/
brew install 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
如果要在 Linux 上重新启动 Postgresql,则必须使用以下命令。
/etc/init.d/postgresql restart
这对我有用:运行
sudo lsof -i :<port_number>
之后它将显示当前附加到进程的PID。
之后运行sudo kill -9 <PID>
如果这不起作用,请尝试 user8376606 提供的解决方案,它肯定会起作用!
首先我试过
lsof -wni tcp:5432 但它没有显示任何 PID 号。
第二次我试过
Postgres -D /usr/local/var/postgres 并显示服务器正在侦听。
所以我只是重新启动了我的 mac 来恢复所有端口,它对我有用。
对于Docker用户:在我的情况下,它是由过大的Docker图像大小引起的。 您可以使用prune
命令删除未使用的数据:
docker system prune --all --force --volumes
警告:根据手册( docker system prune --help
):
这将删除:
- 所有停止的容器
- 至少一个容器未使用的所有网络
- 所有悬垂的图像
- 所有悬空构建缓存
就我而言
运行 => service.msc => 重新启动
我在尝试将Django应用程序连接到PostgreSQL数据库时遇到了类似的问题。
我写了我的Dockerfile
其中包含设置Django项目的说明,然后是在我docker-compose.yml
安装PostgreSQL和运行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
时,都会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
网络,这意味着如果我将数据库的host
更改为postgres
,后者在docker-compose.yml
定义为服务, docker-compose.yml
将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',
},
}
}
我在windows上经常遇到这个问题,我解决这个问题的方法是Service——点击PostgreSQL Database Server 8.3——点击第二个标签“登录”——选择第一行“本地系统账户”。
如果您只是停止 PostgreSQL 应用程序,它也会出现相同的错误。 你只需要重新开始。 (PostgreSQL 11)
我遇到了同样的问题,我无法启动 postgresql 服务器,即使在提供密码后也无法访问我的数据库,我一直在做所有可能的方法。
这个解决方案对我有用,
对于 Ubuntu 用户:通过命令行,键入以下命令:
1.service --status-all(列出所有服务及其状态。其中“+”表示正在运行,“-”表示服务不再运行)
检查 postgresql 状态,如果是“-”,则输入以下命令
2.systemctl start postgresql(再次启动服务器)
在浏览器中刷新 postgresql 页面,它可以工作
对于 Windows 用户:
搜索服务,我们可以在其中看到服务列表并右键单击 postgresql,单击开始,服务器运行正常。
第 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
就我而言,我忘记将数据库从 postgres(在我的生产中)更改回我用于开发的 sqlite3。
用户@MacBook-Pro % sudo lsof -i :5430
输出
命令 PID 用户 FD 类型 设备大小/关闭节点名称
节点 7885 用户 21u IPv6 0x2e7d89f6118f95b9 0t0 TCP *:radec-corp (听)
杀死PID
用户@MacBook-Pro % sudo kill -9 7885
再做一项测试
用户@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
然后重新启动操作系统
sudo reboot
启动后我启动了postgresql
并且它起作用了。
brew services start postgresql
就我而言,在 Ruby on Rails 项目中,我从tmp/pids
文件夹中删除了一个 .pid 文件并重新启动系统。
有同样的问题。 我检查了我的 database.yml 文件,(开发模式)主机指向 5433。我将其更新为 5432 并且它工作正常。
就我而言,PostgreSQL 在后台从13.4
版更新到14
版,因此它通过以下方式修复:
brew postgresql-upgrade-database
并在启动或重新启动服务postgresql
:
brew services restart postgresql
PS:你怎么能理解是什么问题?
首先:看到服务没有正确启动
brew services list
第二:显示文件postgres.log
,错误在哪里
tail -f /usr/local/var/log/postgres.log
所以:通过这个文本错误找到答案
以防万一有人需要windows
,请继续阅读。
在 windows 上点击Windows button
+ R
然后输入services.msc
并查找postgresql-x64-14
,右键单击它并单击start
然后 go 回到您的PgAdmin4
以获取 windows,然后在询问时输入您的master password
。 从这里,您应该能够像往常一样继续查看数据库模式。
此外,对于 Django,使用CTR+C
然后python manage.py runserver
重新启动服务器(假设您在虚拟环境中工作)
祝你好运
ps -ef|grep postgres
然后用PID杀死进程
sudo kill -9 PID
然后启动postgresql
sudo service postgresql start
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.