在此之前,请注意我在Stack Overflow和网络上的文章中发现了几个类似的问题,但这些都没有帮助我解决我的问题:
现在,问题在于:
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
个文件。
我知道如何解决这个问题吗?
答案 0 :(得分:54)
运行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
你应该好好去。
答案 1 :(得分:29)
你很可能没电了,你的postgresql服务器没有正确关机。
最简单的解决方法是下载官方postgresql应用并启动它:它将强制服务器启动(http://postgresapp.com/)
答案 2 :(得分:26)
很可能是因为您的系统意外关闭
尝试
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
答案 3 :(得分:11)
可能就像postgresql服务失败一样简单。尝试运行:
sudo service postgresql start
为我解决了这个问题。
答案 4 :(得分:9)
这适用于我的情况:
brew uninstall postgresql
rm -fr /usr/local/var/postgres/
brew install postgresql
答案 5 :(得分:7)
我在运行postgresql(mac)的Ruby on Rails应用程序中遇到了几乎相同的错误。这对我有用:
brew services restart postgresql
答案 6 :(得分:3)
这可能是由于意外关闭而未删除为postgress创建的pid文件。因此,要解决此问题,请删除此pid文件。
找到postgres数据目录。在使用自制软件的MAC上,它是/usr/local/var/postgres/
,在其他系统上,它可能是/usr/var/postgres/
删除pid文件
rm postmaster.pid
重新启动后端。在Mac上,
brew服务重新启动PostgreSQL
答案 7 :(得分:1)
$ ls /usr/local/var/postgresql@10
postmaster.pid
并删除该文件 $ rm -f postmaster.pid
$ brew services restart postgresql@10
答案 8 :(得分:1)
就我而言
运行=> service.msc =>重新启动
答案 9 :(得分:1)
对于 Docker 用户:就我而言,这是由于docker映像大小过大引起的。您可以使用prune
命令删除未使用的数据:
docker system prune --all --force --volumes
警告:,按照手册(docker system prune --help
):
这将删除:
- 所有停止的容器
- 至少一个容器未使用的所有网络
- 所有悬空的图像
- 所有悬空的构建缓存
答案 10 :(得分:1)
我通过此命令解决了问题
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
答案 11 :(得分:1)
如果要在Linux上重新启动Postgresql,则必须使用以下命令。
/etc/init.d/postgresql restart
答案 12 :(得分:0)
首先我尝试了
lsof -wni tcp:5432 但它没有显示任何PID号。
第二次尝试
Postgres -D / usr / local / var / postgres 它表明服务器正在监听。
所以我刚刚重新启动了Mac,以恢复所有端口,它对我有用。
答案 13 :(得分:0)
如果您只是停止PostgreSQL应用程序,它也会给出相同的错误。您只需要重新启动即可。 (PostgreSQL 11)
答案 14 :(得分:0)
我遇到了同样的问题,即使输入密码后也无法启动postgresql服务器,也无法访问我的数据库,而且我已经做了所有可能的方法。
此解决方案对我有用,
对于Ubuntu用户: 通过命令行键入以下命令:
1.service --status-all(提供所有服务及其状态的列表。其中“ +”表示正在运行,“-”表示该服务不再运行)
检查postgresql状态,如果其为“-”,则键入以下命令
2.systemctl启动postgresql(再次启动服务器)
在浏览器中刷新Postgresql页面,并且有效
对于Windows用户:
搜索服务,我们可以在其中看到服务列表,然后右键单击postgresql,单击“开始”,然后服务器运行正常。
答案 15 :(得分:0)
这对我有用: 运行
sudo lsof -i :<port_number>
之后它将显示当前附加到过程的PID。
之后运行sudo kill -9 <PID>
如果不起作用, 尝试user8376606提供的解决方案肯定会有效!
答案 16 :(得分:0)
第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
答案 17 :(得分:0)
当我尝试将我的 Django 应用程序连接到 PostgreSQL 数据库时,遇到了类似的问题。
我写了Dockerfile
并附带了设置 Django 项目的说明以及安装 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
时都会出现同样的错误。曾经弹出。
这就是在 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
,则将其定义为{ {1}}将创造奇迹。
因此,替换docker-compose.yml
=> 'HOST': '127.0.0.1'
为我带来了奇迹。
替换后,这就是'HOST': 'postgres'
中的数据库配置。
settings.py
答案 18 :(得分:0)
就我而言,我忘记将数据库从 postgres(在我的产品中)更改回我用于开发的 sqlite3。
答案 19 :(得分:0)
user@MacBook-Pro % sudo lsof -i :5430
输出
命令 PID 用户 FD 类型设备大小/关闭节点名称
节点 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”
答案 20 :(得分:0)
这是我解决问题的方法:
查看服务状态
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
答案 21 :(得分:0)
我经常在windows上遇到这个问题,我解决问题的方法是服务 - 点击PostgreSQL数据库服务器8.3 - 点击第二个标签&#34;登录&#34; - 选择第一行&#34;本地系统帐户&#34;。