PG :: ConnectionBad - não foi possível conectar ao servidor: conexão recusada

271

Toda vez que executo meu servidor Rails 4.0, recebo essa saída.

Started GET "/" for 127.0.0.1 at 2013-11-06 23:56:36 -0500

PG::ConnectionBad - 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?
could not connect to server: Connection refused
Is the server running on host "localhost" (fe80::1) and accepting
TCP/IP connections on port 5432?
:
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `connect'
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:542:in `initialize'
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `postgresql_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:440:in `new_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:450:in `checkout_new_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `acquire_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:356:in `block in checkout'
 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in `checkout'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `block in connection'
 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:264:in `connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:546:in `retrieve_connection'
 activerecord (4.0.0) lib/active_record/connection_handling.rb:79:in `retrieve_connection'
 activerecord (4.0.0) lib/active_record/connection_handling.rb:53:in `connection'
 activerecord (4.0.0) lib/active_record/migration.rb:792:in `current_version'
 activerecord (4.0.0) lib/active_record/migration.rb:800:in `needs_migration?'
 activerecord (4.0.0) lib/active_record/migration.rb:379:in `check_pending!'
 activerecord (4.0.0) lib/active_record/migration.rb:366:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
 activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__1613334440513032208__call__callbacks'
 activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
 actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:56:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
 railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
 railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
 railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
 quiet_assets (1.0.2) lib/quiet_assets.rb:18:in `call_with_quiet_assets'
 actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
 rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
 rack (1.5.2) lib/rack/runtime.rb:17:in `call'
 activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
 rack (1.5.2) lib/rack/lock.rb:17:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
 railties (4.0.0) lib/rails/engine.rb:511:in `call'
 railties (4.0.0) lib/rails/application.rb:97:in `call'
 rack (1.5.2) lib/rack/content_length.rb:14:in `call'
 thin (1.5.1) lib/thin/connection.rb:81:in `block in pre_process'
 thin (1.5.1) lib/thin/connection.rb:79:in `pre_process'
 thin (1.5.1) lib/thin/connection.rb:54:in `process'
 thin (1.5.1) lib/thin/connection.rb:39:in `receive_data'
 eventmachine (1.0.3) lib/eventmachine.rb:187:in `run'
 thin (1.5.1) lib/thin/backends/base.rb:63:in `start'
 thin (1.5.1) lib/thin/server.rb:159:in `start'
 rack (1.5.2) lib/rack/handler/thin.rb:16:in `run'
 rack (1.5.2) lib/rack/server.rb:264:in `start'
 railties (4.0.0) lib/rails/commands/server.rb:84:in `start'
 railties (4.0.0) lib/rails/commands.rb:78:in `block in <top (required)>'
 railties (4.0.0) lib/rails/commands.rb:73:in `<top (required)>'
 bin/rails:4:in `<main>'

Estou executando o Mavericks OS X 10.9, então não sei se esse é o problema. Eu tentei de tudo que pude, mas nada parece funcionar. Eu desinstalei e instalei o postgres e a pg gem várias vezes agora.

Este é o meu arquivo database.yml

development:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_development
  pool: 5
  username: 
  password: 
  template: template0
  host: localhost
  port: 5432

test: &test
  adapter: postgresql
  encoding: unicode
  database: metals-directory_test
  pool: 5
  username: 
  password: 
  template: template0
  host: localhost
  port: 5432

staging:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_production
  pool: 5
  username:
  password:
  template: template0
  host: localhost

production:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_production
  pool: 5
  username:
  password:
  template: template0
  host: localhost

cucumber:
  <<: *test
fadelakin
fonte
2
tente adicionar 'host: localhost' em seu database.yml, tenho essa de stackoverflow.com/a/10793186/919641
Surendra Bobba
1
@trajan Eu já fiz isso. Eu até usei esse segmento quando comecei a pesquisar uma solução. Publiquei meu arquivo database.yml. Você pode dar uma olhada nisso. Talvez possa ajudar.
Fadelakin 7/11
mostre seu pg_hba.conf
Pronix
2
Não se esqueça de ativar o aplicativo postgres se você estiver usando isso.
Pavan Katepalli 14/01
1
Obrigado por me lembrar de ativar o aplicativo @PavanKatepalli! Boa
tarde

Respostas:

638

Pode ser tão simples quanto um arquivo PID antigo . Pode estar falhando silenciosamente porque o seu computador não concluiu completamente o processo de desligamento, o que significa que o postgres não excluiu o arquivo PID (identificação do processo).

O arquivo PID é usado pelo postgres para garantir que apenas uma instância do servidor esteja sendo executada por vez. Portanto, quando ele inicia novamente, falha porque já existe um arquivo PID que informa ao postgres que outra instância do servidor foi iniciada (mesmo que não esteja sendo executada, ela simplesmente não conseguiu desligar e excluir o PID) .

  1. Para corrigi-lo, remova / renomeie o arquivo PID. Encontre o diretório de dados do postgres. No macOS, usando o homebrew, ele está presente /usr/local/var/postgres/ou em /usr/local/var/log/outros sistemas /usr/var/postgres/.
  2. Para garantir que esse seja o problema, consulte o arquivo de log ( server.log). Nas últimas linhas, você verá:

FATAL: o arquivo de bloqueio "postmaster.pid" já existe.
DICA: Há outro postmaster (PID 347) em execução no diretório de dados "/ usr / local / var / postgres"?

  1. Se então, rm postmaster.pid
  2. Reinicie seu servidor. Em um Mac usando launchctl (com homebrew), os seguintes comandos reiniciarão o servidor.

    launchctl unload homebrew.mxcl.postgresql.plist  
    launchctl load -w homebrew.mxcl.postgresql.plist

    OU em versões mais recentes do Brew

    brew services restart postgresql
Chris Slade
fonte
24
O nº 2 é uma ótima sugestão: "Verifique o server.log". Meu erro foi realmente causado por atualização para Yosemite, o log do servidor disse: FATAL: could not open directory "pg_tblspc": No such file or directory. Essa resposta me ajudou com esse problema stackoverflow.com/questions/25970132/...
Paul Kaplan
20
Eu acabei de votar nisso porque me deu o suficiente para resolver o problema de um estilo de terra arrasado. Desinstalei o pg ( gem uninstall pg), desinstalei o postgres ( brew uninstall postgres) e depois coloquei uma nuked na pasta postgres, que ficava com um monte de coisas antigas em ( rm -rf /usr/local/var/postgres). Depois de uma reinicialização brew install postgres, ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents, launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist, e ARCHFLAGS="-arch x86_64" gem install pg. Não sei quantas outras soluções tentei antes de fazer isso funcionar.
IAmNaN
2
o arquivo postmaster.opts é o mesmo que o arquivo postmaster.pid?
ARTLoe
31
Por mais recentes usuários da fermentação, o comando para # 4 ébrew services restart postgresql
streetlogics
7
Para mim (MAC, homebrew) o arquivo de log foi/usr/local/var/log/postgres.log
DZack
44

Após muita pesquisa e análise, encontrei uma solução, se você estiver usando o ubuntu, basta escrever este comando no seu terminal e pressionar enter

sudo service postgresql restart

Isso reiniciará o seu PostgreSQL, espero que seja útil para você.

Jai Kumar Rajput
fonte
3
Obrigado 1000 vezes. Acabei de atualizar minha versão do ubuntu e isso foi corrigido para mim.
Mauricio Moraes
Embora a pergunta se refira ao OSX Mavericks, essa solução é útil para instalações do Ubuntu quando algo peculiar acontece na migração ou na inicialização do servidor.
Jerome
39

Esse problema ocorre quando o postgres não é desligado corretamente. Aqui está como eu resolvi esse problema em três etapas simples.

Etapa 1: Vá para o diretório postgres

Os usuários de Mac encontrarão isso em /usr/local/var/postgresoutras pessoas /usr/var/postgres/.

Etapa 2: Remova o .pidarquivo executando este comando.

rm postmaster.pid

Etapa 3: reinicie o servidor

Usuários de Mac

brew services restart postgresql

Usuários do Linux

sudo service postgresql restart

Por fim, reinicie o aplicativo e você estará pronto.

techdreams
fonte
33

Consegui resolver o problema seguindo a resposta de Chris Slade, mas para reiniciar o servidor, tive que usar os seguintes comandos:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

que encontrei aqui (a resposta do pjammer na parte inferior)

Andrea Gherardi
fonte
25

Você tem o postgresql instalado dentro do seu sistema? Caso contrário, assista Instalar o postgresql . Depois de integrar com êxito o postgresql no seu sistema, você pode digitar algo parecido com isso no terminal do sistema:

which psql
#=> /usr/bin/psql

Depois disso, você precisa criar um usuário e banco de dados no postgresql assim:

sudo su - postgres
psql

Então você pode ver o seguinte dentro do seu terminal

postgres=#

Digite lá:

CREATE USER yourname WITH PASSWORD 'passwordhere';
CREATE DATABASE metals-directory_production  WITH OWNER yourname;
GRANT ALL PRIVILEGES ON DATABASE metals-directory_production TO yourname;

Depois de fazer isso, você precisará corrigir o seu database.yml. Provavelmente você precisa de algo assim:

development:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_development
  pool: 5
  username: yourname
  password: passwordhere   ### password you have specified within psql
  host: localhost
  port: 5432               ### you can configure it in file postgresql.conf

Além disso, se você tiver problemas com o postgresql, é uma boa ideia verificar o pg_hba.conf

Mihail Davydenkov
fonte
1
Eu tê-lo instalado, mas a localização é em / usr / local / bin / psql e quando eu corro sudo -u postgres diz sudo: usuário desconhecido: postgres
fadelakin
O psql deve funcionar se você quiser usar pg no seu aplicativo. Tente digitar o terminal psql metallic-directory_development. Algum resultado? Caso contrário, tente reinstalar o postgres, tente por exemplo
Mihail Davydenkov
Quando executo o psql metallic-directory_development, obtenho o psql: não foi possível conectar ao servidor: Esse arquivo ou diretório não existe O servidor está executando localmente e aceitando conexões no soquete do domínio Unix "/tmp/.s.PGSQL.5432"? Sou programador iniciante em trilhos e não tenho ideia do que isso significa. Eu tentei reinstalar o postgres várias vezes, mas sem sorte.
Fadelakin 7/11
23

Para corrigir este tipo de problemas com Postgres e trabalhar com Postgres sobre Mac OSX, este é provavelmente o melhor eo MAIS FÁCIL solução que eu encontrei até agora:

http://postgresapp.com/

Basta baixar, instalar e ser feliz :)

KM Rakibul Islam
fonte
19
  1. Desinstalar pg:

    gem uninstall pg
  2. Desinstale o postgres:

    brew uninstall postgres
  3. Nuke a pasta postgres que pode estar persistindo com várias coisas antigas:

    rm -rf /usr/local/var/postgres
  4. Reiniciar (talvez desnecessário)

  5. Reinstale a página:

    brew install postgres
  6. Meu comentário na resposta de Chris Slade começa na página da maneira mais difícil, agora eu uso serviços de preparação que simplificaram minha vida de várias maneiras:

    brew install services
  7. E comece a página com ele:

    brew services start postgresql
  8. Reinstale a gema:

    gem install pg

E bobsyouruncle.

IAmNaN
fonte
3
Tenha cuidado com este método ... essa é uma abordagem de terra arrasada e provavelmente destruirá os dbs locais que você possui atualmente. Ter um olhar para github.com/copiousfreetime/launchy onde você pode ser capaz de fazer lunchy stop postgresseguido porlunchy start postgres
lacostenycoder
no ubuntu eu acredito sudo apt purge postgresqlou qualquer outro postgresqlpachage deve ser suficiente e destruirá tudo.
Fabrizio Bertoglio
Fiz isso e agora recebo o seguinte erro: postgresql_adapter.rb: 709: in `rescue in connect ': FATAL: o banco de dados" project3_development "não existe (ActiveRecord :: NoDatabaseError). O que devo fazer ? Eu posso realmente ver o banco de dados em rubimina.
Franky Doul
13

verifique o arquivo postgresql.conf ( ubuntuestá em /etc/postgresql/XX/main/postgresql.conf ) e procure a linha que diz:

listen_addresses="localhost"

tente alterá-lo para:

listen_addresses="*"

seria aceitar todos os IPs, depois verifique a linha que diz:

port=5432

e verifique se é a mesma porta do seu database.yml, por padrão no meu postgresql-9.2, use 5433 em vez do 5432 , não se esqueça de reiniciar o servidor do postgres,

Boa sorte!

Alexis
fonte
Este foi o meu problema também. Eu suspeito que isso aconteceu porque eu já tinha 9.3 em execução quando tentei "atualizar" (ou seja, instalar 9.5). Eu estou supondo que ele estava tentando ser educado e se configurar para ser executado em paralelo em uma porta diferente, em vez de assumir a instalação / processo existente.
Joel Fouse
12

Conforme descrito por @Magne, o erro PG::ConnectionBad - could not connect to server: Connection refusedpode ser apresentado após uma atualização de versão principal / secundária (por exemplo, 9.5 -> 9.6ou 9 -> 10) do PostgreSQL.

Eu recebi esse erro depois de executar brew upgrade postgresqlo lançamento do PostgreSQL versão 9.6. O problema é que as atualizações de versão principais / secundárias requerem etapas adicionais para migrar a data antiga para a nova versão.

Como verificar se este é o seu problema

Você pode verificar se esse é o problema, verificando a versão mais recente da fórmula de preparação do PostgreSQL instalada com o homebrew ...

$ brew info postgresql

/usr/local/Cellar/postgresql/9.5.4_1 (3,147 files, 35M)
Poured from bottle on 2016-10-14 at 13:33:28
/usr/local/Cellar/postgresql/9.6.1 (3,242 files, 36.4M) *
Poured from bottle on 2017-02-06 at 12:41:00

... e depois compará-lo com o atual PG_VERSION

$ cat /usr/local/var/postgres/PG_VERSION
9.5

Se o PG_VERSION for menor que a fórmula de distribuição mais recente e a diferença for uma alteração de versão principal / secundária, esse provavelmente é seu problema.

Como corrigir (ou seja, como atualizar os dados)

As instruções abaixo são para uma atualização de 9.5 para 9.6. Altere os números da versão conforme apropriado para sua própria atualização

Etapa 1. Verifique se o PostgreSQL está desativado:

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, with Homebrew...
$ brew services stop postgresql

Etapa 2. Crie um novo banco de dados intocado:

$ initdb /usr/local/var/postgres9.6 -E utf8

Etapa 3. Verifique quais são as versões binárias antiga e nova:

$ ls /usr/local/Cellar/postgresql/
9.5.3   9.5.4   9.6.1

Observe que, neste exemplo, estou atualizando do binário 9.5.4 para o binário 9.6.1

Etapa 4. Migre os dados atuais para o novo banco de dados usando outilitário pg_upgrade .

$ pg_upgrade \
  -d /usr/local/var/postgres \
  -D /usr/local/var/postgres9.6 \
  -b /usr/local/Cellar/postgresql/9.5.4/bin/ \
  -B /usr/local/Cellar/postgresql/9.6.1/bin/ \
  -v
  • -d sinalizador especifica o diretório de dados atual
  • -D O sinalizador especifica o novo diretório de dados a ser criado
  • -b especifica o binário antigo
  • -B especifica o novo binário para o qual estamos atualizando

Etapa 5. Mova o diretório de dados antigo para fora do caminho

$ mv /usr/local/var/postgres /usr/local/var/postgres9.5

Etapa 6. Mova o diretório de dados recém-criado para onde o PostgreSQL espera que seja

$ mv /usr/local/var/postgres9.6 /usr/local/var/postgres

Etapa 7. Inicie o PostgreSQL novamente

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, if you're running a current version of Homebrew
$ brew services start postgresql

Etapa 8. Se você estiver usando a pg gem no Rails, recompile desinstalando e reinstalando a gem (pule esta etapa se não estiver usando a pg gem)

$ gem uninstall pg
$ gem install pg

Etapa 9. (opcional) Depois de ter se assegurado de que tudo está funcionando bem, é possível executar novamente algum espaço em disco com o seguinte comando:

brew cleanup postgresql

... e se você estiver realmente corajoso, poderá excluir o antigo diretório de dados do PostgreSQL com o seguinte comando

rm -rf /usr/local/var/postgres9.5/

(Esta resposta é baseada em uma excelente postagem no blog https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ com algumas adições)

Neil Atkinson
fonte
7

Como sugerido acima, eu apenas abri o Postgres App no meu Mac, cliquei em Abrir Psql, fechei a psqljanela, reiniciei o servidor Rails no meu terminal e ele estava funcionando novamente, sem mais erros.

Confie no elefante: http://postgresapp.com/

houstongolden
fonte
6

Eu tive o mesmo problema depois de atualizar meu mac no Osx Movaje.

eu encontrei esta solução:

Experimente primeiro a linha de comando abaixo em seu terminal:

brew services restart postgresql

Se nada mudar:

ps aux | grep postgres

Se ainda nada mudar:

ls -ls | grep post

Último comando para corrigi-lo, removeu o arquivo de bloqueio do postgres executando a partir do root:

rm /usr/local/var/postgres/postmaster.pid

e depois :

brew services restart postgresql

De berziiii: https://github.com/ga-wdi-boston/capstone-project/issues/325

Espero que ajude :)

Saudações !!

Basile
fonte
5

Se você acertar esse problema depois de fazer um brew upgradepostgres que atualizado para uma nova versão principal (f.ex 9.3.0a 9.4.0ou superior), em seguida, faça o seguinte:

@ correção do dmitrygusev em https://github.com/Homebrew/homebrew/issues/35240

O seguinte guia de migração oficial do [Postgresql] ajudou:

brew switch postgres 9.3.5    # presuming you already installed 9.4.1
pg_dumpall > outputfile
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
mv /usr/local/var/postgres /usr/local/var/postgres.old
brew switch postgres 9.4.1
initdb -D /usr/local/var/postgres
psql -d postgres -f outputfile

Isso é tudo. Verifique se a importação foi bem e exclua os backups:

rm outputfile
rm -Rf /usr/local/var/postgres.old

O problema aqui é que, em uma atualização de versão principal do postgres, é necessário recriar / migrar seu banco de dados. E possivelmente chowndiretórios ou ligue manualmente initdb.

Veja também: Como atualizar o PostgreSQL da versão 9.5 para a versão 9.6 sem perder dados?


Algumas outras dicas, que podem ser úteis, caso você não esteja usando o Homebrew:

Como parar o servidor PG manualmente:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log stop

Como iniciar o servidor PG manualmente:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

Magne
fonte
4

Localize o arquivo postgres no qual ele pode estar /usr/local/var/postgres/ou /usr/var/postgres/exclua e exclua o postmaster.pidarquivo presente nessa pasta.

Awais Shafqat
fonte
3

Coloque host: localhostno database.ymlarquivo e execute este comando:

rake db:create db:migrate  
Abel
fonte
2

Os usuários de Mac com o aplicativo Postgres podem querer abrir o aplicativo (procure no Postgres ou encontre o ícone do elefante na barra de menus). Nele você pode ver um X vermelho com a mensagem: "Arquivo postmaster.pid obsoleto". Infelizmente, uma pesquisa de destaque não mostrará a localização deste arquivo. Clique em "Configurações do servidor ..." e, na caixa de diálogo exibida, clique no botão "Mostrar" para abrir o diretório de dados. Navegue uma pasta (para mim era "var-10") e exclua o postmaster.pidarquivo.

Volte para o aplicativo Postgres e clique no botão Iniciar. Esse X vermelho deve se transformar em uma marca de seleção verde com a mensagem "Em execução". Agora você deve conseguir executar com êxito os comandos do Rails, como rails serverno terminal.

Configurações do servidor de aplicativos do Postgres - Mostrar diretório de dados

chemturion
fonte
Isso resolveu para mim. Muito obrigado pela solução! Foi um processo!
perfil
2

Acabei de ter esse problema esta noite, trabalhando em um aplicativo de trilhos em que estou trabalhando há um tempo. Meu problema simplesmente se resumiu ao fato de meu servidor postgresql não estar em execução .

Fui para o topo da tela (estou em um Mac) e cliquei no ícone do pequeno elefante e cliquei em 'Iniciar'.

Acontece que o servidor não estava ativado.

Espero que isso forneça uma solução simples para alguém.

solidstatejake
fonte
1

Definitivamente, foi a resposta de Chris Slade que me ajudou.

Eu escrevi um pequeno script para matar os processos restantes, se útil:

kill_postgres() {
  if [[ $* -eq "" ]]; then
    echo "Usage: 'kill_postgres <db_name>' to kill remaining instances (Eg. 'kill_postgres my_app_development')"
  else
    gksudo echo "Granted sudo"
    pids="$(ps xa | grep postgres | grep $* | awk '{print $1}' | xargs)"
    if [[ $pids -eq "" ]]; then
      echo "Nothing to kill"
    else
      for pid in "${pids[@]}"
      do
        echo "Killing ${pid}"
        sudo kill $pid
        echo "Killed ${pid}"
      done
      kill_postgres $*
    fi
  fi
}
Augustin Riedinger
fonte
1

Eu tive o mesmo problema na produção (desenvolvimento tudo funcionou); no meu caso, o servidor DB não está na mesma máquina que o aplicativo, então, finalmente, o que funcionou é apenas migrar escrevendo:

bundle exec rake db:migrate RAILS_ENV=production

e, em seguida, reinicie o servidor e tudo funcionou.

leah
fonte
1

Eu sei que é tarde, mas pode ajudar alguém. Eu estava tendo o mesmo problema. Acontece que eu tinha duas versões do postgres 9.1 e 9.5. Eu desinstalei 9.1 e 9.5 e instalei o 9.5 novamente e funcionou para mim.

Darshan Chauhan
fonte
1

Você provavelmente reiniciou o computador e esqueceu de iniciar o aplicativo Postgres.

O Whiz de Oz
fonte
1

Eu tive o mesmo problema. I Verifique a última linha dos PostgreSQLarquivos de log /var/log/postgresql. Havia um parâmetro de configuração não reconhecido no arquivo /etc/postgresql/9.5/main/postgresql.conf . Comentar a linha de erro postgresql.confresolveu meu problema.

Hajar Homayouni
fonte
1

Meu problema estava no meu arquivo application.yml . Meu banco urlde dados herokunão estava usando a porta 5342. Verifique sua herokuconfiguração var DATABASE_URL. Certifique-se de que corresponda exatamente com estava em seu application.yml para o banco de dados aplicável.

NickDK
fonte
1

Eu tive o mesmo problema, esta explicação resolveu para mim: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/

A etapa principal foi analisar o final do meu /usr/local/var/postgres/server.log , que me permitiu ver qual era o verdadeiro problema, que era o fato de eu não ter concluído completamente o processo de atualização do PostgreSQL

Ben Wheeler
fonte
Situação semelhante aqui - a chave para mim também era olhar server.log. Encontrei minha resposta aqui: stackoverflow.com/questions/25970132/…
Nathan Wallace
1

Acabei de executar este comando sudo service postgresql restart e tudo funcionou novamente.

kalibbala
fonte
0

Parei o servidor Rails, corri rake db:migratee iniciei o meu rails s.

thedanotto
fonte
0

Acabei de ter esse problema e nenhuma das soluções sugeridas funcionou para mim. Depois de pesquisar bastante, encontrei uma solução. Isto é o que funcionou para mim.

Primeiro, tive que executar este comando para iniciar o servidor e suponho definir o local do arquivo de configuração.

pg_ctl -D /usr/local/var/postgres start && brew services start postgresql

Então eu executei este comando para acessar o postgres

psql postgres

E no prompt do postgres, digitei "\ du" para listar as funções

postgres=# \du

Faltava a função do postgres, então tive que criá-la com este comando

CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;

Isso resolveu meu problema e espero que isso ajude outra pessoa.

luis.madrigal
fonte
0

Você não precisa excluir o postmaster.pidarquivo, pois isso pode estar convidando a corrupção de dados.

Opção? Simplesmente killo processo (não use kill -9, apenas uma matança comum servirá).

Em seguida, basta reiniciar o servidor postgres e pronto!

Aqui estão as etapas para conseguir isso:

  1. Localize e abra o postmaster.pidarquivo (o meu está no Mac Sierra)

    vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid

  2. Copie o PID - é o número na primeira linha do postmaster.pidarquivo

  3. Finalize o processo com kill PID, por exemplo, se meu PID for 381, eu fareikill 381
  4. Reinicie o Postres - se estiver usando cerveja, faça brew services start postgresql. Ou, se estiver usando o postgresapp, basta clicar no startbotão
Ruto Collins
fonte
0

O gerenciador de pacotes Homebrew inclui listas do launchctl para iniciar automaticamente. Para mais informações, execute brew info postgres.

Comece manualmente:

pg_ctl -D /usr/local/var/postgres start

Pare manualmente:

pg_ctl -D /usr/local/var/postgres stop

Iniciar automaticamente:

"Para que o launchd inicie o postgresql agora e reinicie no login:"

brew services start postgresql

user3402754
fonte