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
ruby-on-rails
ruby
ruby-on-rails-4
database-connection
pg
fadelakin
fonte
fonte
Respostas:
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) .
/usr/local/var/postgres/
ou em/usr/local/var/log/
outros sistemas/usr/var/postgres/
.server.log
). Nas últimas linhas, você verá:rm postmaster.pid
Reinicie seu servidor. Em um Mac usando launchctl (com homebrew), os seguintes comandos reiniciarão o servidor.
OU em versões mais recentes do Brew
fonte
FATAL: could not open directory "pg_tblspc": No such file or directory
. Essa resposta me ajudou com esse problema stackoverflow.com/questions/25970132/...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çãobrew install postgres
,ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
,launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
, eARCHFLAGS="-arch x86_64" gem install pg
. Não sei quantas outras soluções tentei antes de fazer isso funcionar.brew services restart postgresql
/usr/local/var/log/postgres.log
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
Isso reiniciará o seu PostgreSQL, espero que seja útil para você.
fonte
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/postgres
outras pessoas/usr/var/postgres/
.Etapa 2: Remova o
.pid
arquivo executando este comando.Etapa 3: reinicie o servidor
Usuários de Mac
Usuários do Linux
Por fim, reinicie o aplicativo e você estará pronto.
fonte
Consegui resolver o problema seguindo a resposta de Chris Slade, mas para reiniciar o servidor, tive que usar os seguintes comandos:
que encontrei aqui (a resposta do pjammer na parte inferior)
fonte
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:
Depois disso, você precisa criar um usuário e banco de dados no postgresql assim:
Então você pode ver o seguinte dentro do seu terminal
Digite lá:
Depois de fazer isso, você precisará corrigir o seu
database.yml
. Provavelmente você precisa de algo assim:Além disso, se você tiver problemas com o postgresql, é uma boa ideia verificar o pg_hba.conf
fonte
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 :)
fonte
Desinstalar pg:
Desinstale o postgres:
Nuke a pasta postgres que pode estar persistindo com várias coisas antigas:
Reiniciar (talvez desnecessário)
Reinstale a página:
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:
E comece a página com ele:
Reinstale a gema:
E bobsyouruncle.
fonte
lunchy stop postgres
seguido porlunchy start postgres
sudo apt purge postgresql
ou qualquer outropostgresql
pachage deve ser suficiente e destruirá tudo.verifique o arquivo postgresql.conf (
ubuntu
está em /etc/postgresql/XX/main/postgresql.conf ) e procure a linha que diz:tente alterá-lo para:
seria aceitar todos os IPs, depois verifique a linha que diz:
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!
fonte
Conforme descrito por @Magne, o erro
PG::ConnectionBad - could not connect to server: Connection refused
pode ser apresentado após uma atualização de versão principal / secundária (por exemplo,9.5 -> 9.6
ou9 -> 10
) do PostgreSQL.Eu recebi esse erro depois de executar
brew upgrade postgresql
o 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 ...
... e depois compará-lo com o atual PG_VERSION
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:
Etapa 2. Crie um novo banco de dados intocado:
Etapa 3. Verifique quais são as versões binárias antiga e nova:
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 .
-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 atualizandoEtapa 5. Mova o diretório de dados antigo para fora do caminho
Etapa 6. Mova o diretório de dados recém-criado para onde o PostgreSQL espera que seja
Etapa 7. Inicie o PostgreSQL novamente
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)
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:
... e se você estiver realmente corajoso, poderá excluir o antigo diretório de dados do PostgreSQL com o seguinte comando
(Esta resposta é baseada em uma excelente postagem no blog https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ com algumas adições)
fonte
Isso é o que realmente me ajudou.
Referência: http://alumni.lewagon.org/questions/60
fonte
Como sugerido acima, eu apenas abri o Postgres App no meu Mac, cliquei em Abrir
Psql
, fechei apsql
janela, reiniciei o servidor Rails no meu terminal e ele estava funcionando novamente, sem mais erros.Confie no elefante: http://postgresapp.com/
fonte
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:
Se nada mudar:
Se ainda nada mudar:
Último comando para corrigi-lo, removeu o arquivo de bloqueio do postgres executando a partir do root:
e depois :
De berziiii: https://github.com/ga-wdi-boston/capstone-project/issues/325
Espero que ajude :)
Saudações !!
fonte
Se você acertar esse problema depois de fazer um
brew upgrade
postgres que atualizado para uma nova versão principal (f.ex9.3.0
a9.4.0
ou superior), em seguida, faça o seguinte:O problema aqui é que, em uma atualização de versão principal do postgres, é necessário recriar / migrar seu banco de dados. E possivelmente
chown
diretórios ou ligue manualmenteinitdb
.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
fonte
Localize o arquivo postgres no qual ele pode estar
/usr/local/var/postgres/
ou/usr/var/postgres/
exclua e exclua opostmaster.pid
arquivo presente nessa pasta.fonte
Coloque
host: localhost
nodatabase.yml
arquivo e execute este comando:fonte
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.pid
arquivo.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 server
no terminal.fonte
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.
fonte
Definitivamente, foi a resposta de Chris Slade que me ajudou.
Eu escrevi um pequeno script para matar os processos restantes, se útil:
fonte
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:
e, em seguida, reinicie o servidor e tudo funcionou.
fonte
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.
fonte
Você provavelmente reiniciou o computador e esqueceu de iniciar o aplicativo Postgres.
fonte
Eu tive o mesmo problema. I Verifique a última linha dos
PostgreSQL
arquivos 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 erropostgresql.conf
resolveu meu problema.fonte
Meu problema estava no meu arquivo application.yml . Meu banco
url
de dadosheroku
não estava usando a porta 5342. Verifique suaheroku
configuraçãovar DATABASE_URL
. Certifique-se de que corresponda exatamente com estava em seu application.yml para o banco de dados aplicável.fonte
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
fonte
server.log
. Encontrei minha resposta aqui: stackoverflow.com/questions/25970132/…Acabei de executar este comando
sudo service postgresql restart
e tudo funcionou novamente.fonte
Parei o servidor Rails, corri
rake db:migrate
e iniciei o meurails s
.fonte
Corri para este erro depois de seguir um
brew upgrade
em que o postgresql foi atualizado. Eu descobri exatamente como resolver meu problema neste ótimo post. Consegui fazer o postgres voltar a funcionar e até migrar sobre todos os meus bancos de dados existentes. https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgradefonte
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.
Então eu executei este comando para acessar o postgres
E no prompt do postgres, digitei "\ du" para listar as funções
Faltava a função do postgres, então tive que criá-la com este comando
Isso resolveu meu problema e espero que isso ajude outra pessoa.
fonte
Você não precisa excluir o
postmaster.pid
arquivo, pois isso pode estar convidando a corrupção de dados.Opção? Simplesmente
kill
o processo (não usekill -9
, apenas uma matança comum servirá).Em seguida, basta reiniciar o servidor postgres e pronto!
Aqui estão as etapas para conseguir isso:
Localize e abra o
postmaster.pid
arquivo (o meu está no Mac Sierra)vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid
Copie o PID - é o número na primeira linha do
postmaster.pid
arquivokill PID
, por exemplo, se meu PID for 381, eu fareikill 381
brew services start postgresql
. Ou, se estiver usando o postgresapp, basta clicar nostart
botãofonte
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
fonte