繁体   English   中英

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

[英]Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432?

首先,请注意,我在 Stack Overflow 和 web 上的文章中发现了几个类似的问题,但这些都没有帮助我解决问题:

现在,问题来了:

  • 我有一个非常棒的 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文件。

知道我该如何解决这个问题吗?

运行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 文件。

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

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

     rm postmaster.pid
  3. 重新启动 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 ):

这将删除:

  • 所有停止的容器
  • 至少一个容器未使用的所有网络
  • 所有悬垂的图像
  • 所有悬空构建缓存

就我而言

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

运行 => service.msc => 重新启动

  1. 现在重试

我在尝试将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.ymldocker-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',
            },
        }
    } 
  1. 查找 postgresql@10 服务目录
  $ ls /usr/local/var/postgresql@10

在此处输入图片说明

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

我在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。

它对我有用>>Node.Js App

用户@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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM