服务器是否在主机“ localhost”(: : 1)上运行并在端口5432上接受 TCP/IP 连接?

在做任何事情之前,请注意我在 Stack Overflow 和整个网络上的文章中发现了几个类似的问题,但是没有一个能帮助我解决我的问题:

现在的问题是:

  • 我有一个 Rails 应用程序,工作像一个魅力。
  • 与我的合作者一起,我们使用 GitHub 一起工作。
  • 我们有一个 master和一个 mvp分支。
  • 我最近更新了我的 git版本与家酿(Mac)。
  • 我们使用 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文件。

知道我该怎么补救吗?

319612 次浏览

您很可能用完了电池,并且 postgreql 服务器没有正确关闭。

最简单的解决方案是下载官方 postgreql 应用程序并启动它: 它将强制服务器启动(http://postgresapp.com/)

Postgreql 服务器可能已经关闭,解决方案可能与运行一样简单:

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

你应该可以走了。

我经常在 windows 上遇到这个问题,我解决这个问题的方法是 Service-Click PostgreSQL Database Server 8.3-Click the second tab“ login in”-select the first line“ the local system account”。

这对我很有效: 快跑

sudo lsof -i :<port_number>

之后,它将显示 PID 是当前附加到进程。

之后运行 sudo kill -9 <PID>

如果不成功, 尝试用户8376606提供的解决方案,它一定会工作!

如果您想在 Linux 上重新启动 Postgreql,那么必须使用以下命令。

/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 创建的 pid 文件由于意外关闭而没有被删除造成的。要解决这个问题,请删除这个 pid 文件。

  1. 查找 postgres 数据目录。在使用自制的 MAC 上,它是 /usr/local/var/postgres/,其他系统可能是 /usr/var/postgres/

  2. 运行以下命令删除 pid 文件:

    rm postmaster.pid
    
  3. 重新启动后进程,在 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

我的 Ruby on Rails 应用程序运行 postgreql (mac)时也出现了同样的错误:

brew services restart postgresql

首先我尝试了

编号: 5432 但是没有显示任何 PID 号码。

我第二次尝试

Postgres-D/usr/local/var/Postgres 显示服务器正在监听。

所以我重新启动了我的 Mac 来恢复所有的端口,这对我很有用。

对于 多克用户: 在我的情况下,它是由于过多的码头图像大小。您可以使用 prune命令删除未使用的数据:

docker system prune --all --force --volumes

警告: 根据手册(docker system prune --help) :

这将消除:

  • 所有已停运的集装箱
  • 至少有一个容器没有使用所有网络
  • 所有悬而未决的画面
  • 所有悬空构建缓存

如果只是停止 PostgreSQL 应用程序,也会出现相同的错误。你只需要重新开始。(PostgreSQL 11)

我也遇到过同样的问题,我无法启动 postgreql 服务器,甚至在输入密码之后也无法访问我的数据库,我已经尝试了所有可能的方法。

这个方法对我很有效,

对于 Ubuntu 用户: 通过命令行键入以下命令:

1.Service —— status-all (提供所有服务及其状态的列表。其中“ +”表示正在运行,而“-”表示服务不再运行)

检查 postgreql status,如果它是“-”,那么键入以下命令

Systemctl start postgreql (再次启动服务器)

在浏览器中刷新 postgreql 页面,它就可以工作了

对于 Windows 用户:

搜索服务,在这里我们可以看到服务列表,右键点击 postgreql,点击开始,服务器工作完全正常。

对我来说

  1. 我已经在 postgreql.conf 文件中更改了端口
  2. 中重新启动 postgreql 服务

运行 = > service.msc = > Restart

  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

我在尝试将我的 姜戈应用程序连接到 PostgreSQL数据库时遇到了类似的问题。

我写了我的 Dockerfile与指示设置 姜戈项目,随后的指示安装 PostgreSQL和运行 姜戈服务器在我的 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,然后同样的 err.used 弹出。

这就是我的数据库在 姜戈 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 网络,这意味着如果我改变我的数据库的 hostpostgres,这是定义为一个服务在 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 lfer-i: 5430

输出

命令 PID 用户 FD 类型设备大小/关闭节点名称

Node 7885 user 21u IPv60x2e7d89f6118f95b90t0 TCP * : radec-corp (LISTEN)

关闭 PID

User@MacBook-Pro% sudo kill -97885

再做一个测试

User@MacBook-Pro% sudo lfer-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
  1. 查找 postgreql@10服务目录
  $ ls /usr/local/var/postgresql@10

enter image description here

  1. 查找文件 postmaster.pid并删除该文件
  $ rm -f postmaster.pid
  1. 重新启动 postgres 服务
  $ brew services restart postgresql@10

在我的例子中,在一个 Ruby on Rails 项目中,我删除了一个。Pid 文件从文件夹 tmp/pids并重新启动系统。

有同样的问题。我检查了我的 datase.yml 文件,(dev 模式)主机指向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

因此 通过这个错误的文本找到答案

为了以防有人需要这个 windows,继续读下去。

在窗口上按 Windows button + R 然后输入 services.msc并查找 postgresql-x64-14,右键单击它并单击 start

然后回到你的 PgAdmin4窗口,然后输入你的 master password如果问。 从这里开始,您应该能够像往常一样查看数据库模式。

另外,对于 Django,使用 CTR+C重新启动服务器,然后使用 python manage.py runserver(假设您在一个虚拟 env 中工作)

祝你好运