Como alguns outros, estou recebendo esse erro ao executar o rake db: migrate no meu projeto ou até mesmo tentar a maioria das tarefas de banco de dados para meus aplicativos Ruby on Rails 3.2.
PGError (não foi possível conectar ao servidor: não existe esse arquivo ou diretório. O servidor está executando localmente e aceitando conexões no soquete de domínio Unix "/tmp/.s.PGSQL.5432"?
Instalei o PostgreSQL com o Homebrew há muito tempo e, após uma tentativa de instalação do MongoDB recentemente, minha instalação do PostgreSQL nunca foi a mesma. Estou executando o OS X versão 10.6 Snow Leopard.
O que há de errado e como entendo melhor como o PostgreSQL é e deve ser configurado no meu Mac?
Até agora (eu acho) isso me diz que o PostgreSQL não está executando (?).
ps -aef|grep postgres (ruby-1.9.2-p320@jct-ana) (develop) ✗
501 17604 11329 0 0:00.00 ttys001 0:00.00 grep postgres
Mas isso me diz que o PostgreSQL está em execução?
✪ launchctl load -w /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist (ruby-1.9.2-p136)
homebrew.mxcl.postgresql: Already loaded
Como faço para corrigir isso? o que não estou vendo?
PS: ~/Library/LaunchAgents
inclui dois arquivos .plist do PostgreSQL. Não tenho certeza se isso é relevante.
org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist
Eu tentei o seguinte e obtive um resultado como abaixo.
$ psql -p 5432 -h localhost
psql: 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" (::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?
Eu li que isso está ocorrendo porque o OS X instala sua própria versão do PostgreSQL e o Homebrew instala uma versão diferente em um local diferente e os comandos do PostgreSQL estão procurando no diretório / tmp /. Você precisará pesquisar mais sobre o Stack Overflow, mas basicamente vinculará o PostgreSQL para que qualquer coisa que procure nesse caminho tmp encontre o caminho real, se isso fizer sentido.
Este é o link em que encontrei mais algumas coisas para tentar, especificamente fazendo o link simbólico conforme descrito acima, o Mac OSX Lion Postgres não aceita conexões em /tmp/.s.PGSQL.5432 . Eu ainda gostaria que alguém reunisse uma explicação decente dos conceitos por trás da instalação do PostgreSQL no OS X e por que tudo é tão difícil.
Informações mais recentes para ajudar na solução de problemas:
$ which psql // This tells you which PostgreSQL you are using when you run $ psql.
Então corra:
$ echo $PATH
O principal a levar em conta é o seguinte:
Certifique-se de que a entrada do caminho para a cópia do PostgreSQL que você deseja executar seja apresentada ANTES do caminho para o PostgreSQL do sistema OS X.
Este é um requisito essencial que decide qual PostgreSQL será executado e é o que me disseram que leva à maioria desses problemas.
fonte
Respostas:
Verifique se não há postmaster.pid no diretório postgres, provavelmente
/usr/local/var/postgres/
remova isso e inicie o servidor.
Check - https://github.com/mperham/lunchy é um ótimo wrapper para o launchctl.
fonte
" Postgres.app " é uma correção melhor se você estiver no OS X
Aqui está a correção:
cd /var
rm -r pgsql_socket
ln -s /tmp pgsql_socket
chown _postgres:_postgres pgsql_socket
Mais informações estão disponíveis em " postgresql 9.0.3. No Lion Dev Preview 1 ".
fonte
/tmp
para _postgres, mas hey :)Para mim, isso funciona
fonte
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
brew services restart postgresql
No such file or directory
no meu casoIsso funcionou para mim pelo erro que você mencionou. Siga um destes procedimentos:
É possível alterar a porta padrão especificada no
postgres.conf
arquivo, se você tiver usado algo diferente da porta padrão5432
durante a instalação.Altere o número da porta
postgresql.conf
e reinicie o servidor DB.Em vez de
psql
digitar o comando completo:fonte
Se você estiver executando o Homebrew, desinstale o Postgresql end pg gems: *
Faça o download e execute o seguinte script para corrigir a permissão em / usr / local: * https://gist.github.com/rpavlik/768518
Em seguida, instale o Postgres novamente e pg gem: *
Para que o launchd inicie o postgresql no login, execute:
Ou comece manualmente.
Instalar pg gem
Espero ter ajudado
fonte
brew info postgres
:ARCHFLAGS="-arch x86_64" gem install pg
initdb /usr/local/var/postgres -E utf8
trabalho. Muitíssimo obrigado.Eu tive esse problema quando atualizei o Postgres para 9.3.x. A solução rápida para mim foi fazer o downgrade para a versão 9.2.x que eu tinha antes (não é necessário instalar uma nova).
O " Homebrew instala uma versão específica da fórmula? " Oferece uma explicação muito mais abrangente, além de maneiras alternativas de corrigir o problema.
fonte
Corrigi isso atualizando o postgres.
Também tive que atualizar os bancos de dados para serem compatíveis com a nova versão principal, porque atualizei de 10 para 11.
(fonte https://github.com/facebook/react-native/issues/18760#issuecomment-410533581 )
fonte
Portanto, para muitos dos problemas aqui, parece que as pessoas já estavam executando o psql e tiveram que removê-lo
postmaster.pid
. No entanto, eu não tive esse problema, pois nunca tive o postgres instalado corretamente no meu sistema.Aqui está uma solução que funcionou para mim no MAC OSX Yosemite
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
Espero que isto ajude! Toodles!
Além disso, esta resposta me ajudou muito: https://stackoverflow.com/a/21503349/3173748
fonte
Quando você executa: psql -p 5432 -h localhost, ele não usa o driver de loopback, mas usa um soquete real e, portanto, você precisa configurar o postgres para aceitar as conexões do soquete. Portanto, mesmo que o pgadmin e outros clientes possam funcionar, o psql não funcionará.
Você precisa alterar os arquivos postgresql.conf e pg_hba.conf para permitir a conexão através de um soquete real. Isso também permitirá a conexão de um ip remoto, motivo pelo qual está desativado por padrão.
Esses arquivos estão no diretório de dados, mas o local real pode ser diferente dependendo de como o postgres foi instalado. Com o postgres em execução, execute o comando:
Esses dois arquivos são o diretório -D (talvez / usr / local / pgsql / data).
Para o arquivo postgresql.conf, remova o comentário do endereço de escuta e mude para:
Para o pg_hba.conf, adicione a linha:
fonte
Eu realmente não conheço Mac ou Homebrew, mas conheço muito bem o PostgreSQL.
Você quer descobrir de onde os logs do PostgreSQL estão tentando iniciar e qual é o diretório do soquete do PostgreSQL. Por padrão, quando você cria o PG, o diretório do soquete é / tmp /. Se você não alterou isso quando criou o PG e iniciou o PG, poderá ver um arquivo de soquete em / tmp se fizer: ls -al / tmp
O arquivo de soquete começa com um ".", Portanto você não o verá com o '-a' para ls.
Se você não vê um soquete lá e não vê nada do ps awux | grep postgres, o PG provavelmente não está em execução, ou talvez esteja, e é o instalado pelo OSX. O que pode estar acontecendo é que você pode estar tendo um conflito ao ouvir na porta 5432 no host local - use netstat -anp para ver o que está ouvindo no 5432. Se um PG do Mac OSX já estiver ouvindo nessa porta, isso poderá ser o problema.
Espero que ajude. Ouvi dizer que o homebrew pode tornar as coisas um pouco feias e muitas pessoas com quem conversei para incentivar o uso de uma VM.
fonte
Encontrei este erro ao executar no Mac 10.15.5 usando o homebrew.
Existe um arquivo chamado postmaster.pid que deve ser excluído automaticamente quando o postresql sai.
Se não fizer o seguinte
fonte
A causa
O Lion vem com uma versão do postgres já instalada e usa esses binários por padrão. Em geral, você pode contornar isso usando o caminho completo para os binários do homebrew postgres, mas ainda pode haver problemas com outros programas.
A solução
Através da
http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/
fonte
Uma razão para você receber esse erro é que o banco de dados local do postgres é encerrado quando você reinicia o computador. Em uma nova janela do terminal, basta digitar:
para reiniciar o servidor.
fonte
Olá mundo :)
A melhor, mas estranha, maneira para mim foi fazer as próximas coisas.
1) Faça o download do postgres93.app ou outra versão. Adicione este aplicativo à pasta / Applications /.
2) Adicione uma linha (comando) ao arquivo
É um CAMINHO para.bash_profile
(que está no meu diretório pessoal):psql
partirPostgres93.app
. A linha (comando) é executada toda vez que o console é iniciado.3) Inicie a
Postgres93.app
partir da/Applications/
pasta. Inicia um servidor local (a porta é "5432" e o host é "localhost").4) Depois de todas essas manipulações, fiquei feliz em executar
$ createuser -SRDP user_name
e outros comandos e ver que funcionava!Postgres93.app
pode ser feito para executar sempre que o sistema for iniciado.5) Além disso, se você quiser ver seus bancos de dados graficamente, você deve instalar
PG Commander.app
. É uma boa maneira de ver seu banco de dados do postgres como bonitas tabelas de dadosObviamente, é útil apenas para o servidor local. Ficarei feliz se essas instruções ajudarem outras pessoas que enfrentaram esse problema.
fonte
Eu tinha o PostgreSQL 9.3 e obtive o mesmo erro,
Corrigi isso usando:
Funciona para mim.
fonte
pelo que vale, experimentei o mesmo erro quando tive um erro de digitação (em
md4
vez demd5
) no meupg_hba.conf
arquivo (/etc/postgresql/9.5/main/pg_hba.conf
)Se você chegou aqui como eu, verifique o arquivo uma vez para garantir que não haja nada de ridículo.
fonte
pg_hba.conf
arquivo?Pode haver problemas diferentes com a execução local do PostgreSQL. Eu recomendaria limpar todas as versões do postgres instaladas e começar do zero. Depois de instalá-lo, é muito fácil recriar seu banco de dados se você tiver seu projeto de trilhos com as informações atualizadas.
db/schema.rb
Aqui está como eu costumo instalar o PostgreSQL em um Mac . Se você estiver executando seu banco de dados no usuário raiz localmente, convém omitir a última etapa que cria um
todo
usuáriofonte
Uma das razões pode ser que
unix_socket_directories no arquivo postgresql.conf não está listado no diretório que está procurando.
No exemplo da pergunta, ele está procurando pelo diretório / tmp, que deve ser fornecido no arquivo postgresql.conf
algo assim:
Esta solução funcionou para mim.
fonte
Se você está no MacOS e usa o homebrew, achei esta resposta extremamente útil:
https://stackoverflow.com/a/27708774/4062901
Para mim, meu servidor estava em execução, mas devido a uma atualização eu estava tendo problemas para conectar (nota: eu uso serviços de preparação). Se o Postgres estiver em execução, tente
cat /usr/local/var/postgres/server.log
ver o que os logs dizem. Meu erro foi uma migração, não um problema de conexão.Também após a migração manual que eles propõem (o que funciona, mas) eu descobri que não havia mais uma tabela para o meu usuário. Tente este comando para corrigir isso:
createdb
(respondido via psql: FATAL: o banco de dados "<usuário>" não existe )fonte
Basta reiniciar o Postgres assim que o erro aparecer executando
brew services restart postgresql
e tente novamentefonte
para mim, o comando
rm /usr/local/var/postgres/postmaster.pid
não funcionou porque instalei uma versão específica do postgresql com o homebrew.o comando certo é
rm /usr/local/var/postgres@10/postmaster.pid
.então
brew services restart postgresql@10
.fonte
É muito simples. Adicione apenas host ao seu arquivo database.yaml.
fonte