主机 "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::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 文件。

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

  2. 通过 运行ning 删除 pid 文件:

    rm postmaster.pid
    
  3. 重新启动 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,单击启动,服务器运行正常。

就我而言

  1. 我已经更改了 postgresql.conf 文件中的端口
  2. 并在
  3. 中重启 postgresql 服务

运行 => service.msc => 重启

  1. 现在重试

第 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 更改为定义为服务的 postgresdocker-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
  1. 找到postgresql@10服务目录
  $ ls /usr/local/var/postgresql@10

  1. 查找文件 postmaster.pid 并删除该文件
  $ rm -f postmaster.pid
  1. 使用
  2. 重新启动 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

所以通过这个错误的文本找到答案