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

时间:2016-05-18 18:20:36

标签: ruby-on-rails ruby postgresql ruby-on-rails-3 ruby-on-rails-4

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

现在,问题在于:

  • 我有一个像魅力一样的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个文件。

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

22 个答案:

答案 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文件。

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

  2. 删除pid文件

    rm postmaster.pid

  3. 重新启动后端。在Mac上,

    brew服务重新启动PostgreSQL

答案 7 :(得分:1)

  1. 查找 postgresql@10 服务目录
  $ ls /usr/local/var/postgresql@10

enter image description here

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

答案 8 :(得分:1)

就我而言

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

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

  1. 立即重试

答案 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)

它对我有用 >>Node.Js 应用程序

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;。