Atualizei recentemente minha máquina do Mac OS X Lion (10.7.4) para o Mountain Lion (10.8) e acho que funcionou na minha instalação do PostgreSQL. Foi instalado originalmente via Homebrew. Eu não sou um DBA, mas espero que alguém possa me dizer como solucionar isso.
Não consigo me conectar (mas antes de antes do Mountain Lion):
$ psql -U rails -d myapp_development
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
Mas o Postgres ainda está funcionando claramente:
$ ps aux | grep postgres
meltemi 2010 0.0 0.0 2444124 5292 ?? Ss Wed01PM 0:00.02 postgres: rails myapp_development [local] idle
meltemi 562 0.0 0.0 2439312 592 ?? Ss Wed12PM 0:02.28 postgres: stats collector process
meltemi 561 0.0 0.0 2443228 1832 ?? Ss Wed12PM 0:01.57 postgres: autovacuum launcher process
meltemi 560 0.0 0.0 2443096 596 ?? Ss Wed12PM 0:02.89 postgres: wal writer process
meltemi 559 0.0 0.0 2443096 1072 ?? Ss Wed12PM 0:04.01 postgres: writer process
meltemi 466 0.0 0.0 2443096 3728 ?? S Wed12PM 0:00.85 /usr/local/bin/postgres -D /usr/local/varpostgres -r /usr/local/var/postgres/server.log
E está respondendo a consultas (tanto para um banco de dados de teste quanto para o desenvolvimento) de um aplicativo Rails local
User Load (0.2ms) SELECT "users".* FROM "users"
Rendered users/index.html.haml within layouts/application (1.3ms)
Parece não haver /var/pgsql_socket/
diretório, muito menos o /var/pgsql_socket/.s.PGSQL.5432
arquivo de soquete mencionado acima!?! Talvez a instalação do Mountain Lion tenha acabado com isso?
$ ls -l /var/ | grep pg
drwxr-x--- 2 _postgres _postgres 68 Jun 20 16:39 pgsql_socket_alt
Como posso solucionar isso?
postgresql
psql
mac-os-x
Meltemi
fonte
fonte
/usr/local/var/postgres/server.log
?$PATH
alterações com a atualização/usr/bin
estão à frente/usr/local/bin
e acho que o Mountain Lion pode vir com o PostgreSQL pré-instalado!?! Investigando ...Respostas:
Eu descobri que tinha um problema extremamente semelhante, ou seja, que o postgres estava abrindo um soquete
/var/pgsql_socket_alt
onde nenhum dos meus softwares esperava procurar, mas a solução para o meu problema não era apenas um problema para o meu$PATH
.Eu tive que criar o diretório
/var/pgsql_socket
, chown-lo para mim mesmo, e conjuntounix_socket_directory
napostgresql.conf
(localizado no/usr/local/var/postgres
) para esse diretório, em seguida, usar opg_ctl
binário/usr/local/bin
para iniciar o servidor postgres direito com sucesso (que é onde$PATH
vem - Certifique-sewhich pg_ctl
resolve a/usr/local/bin/pg_ctl
, ou apenas sempre chame explicitamente).Isso pode ajudar outros usuários que encontrarem essa pergunta por meio da
/var/pgsql_socket_alt
menção.fonte
$PATH
como eu fiz.Uma explicação plausível e típica seria que o
psql
que vem com o homebrew é/usr/local/bin/psql
diferente do que seria no seu $ PATH, como/usr/bin/psql
(incluído no OS X). Você pode tentar com o caminho completo:$ /usr/local/bin/psql -U rails -d myapp_development
Além disso, há algo bastante incomum na
ps
saída da sua pergunta: o servidor postgres está sendo executado sob ummeltemi
usuário Unix, enquanto geralmente opostgres
usuário Unix dedicado é usado para isso.fonte
_postgres
(com sublinhado) para usuário / grupo são desconhecidos para mim. Isso é um artefato ou esperado?$PATH
problema, como você afirmou. As coisas funcionam como antes quando eu uso/usr/local/bin/psql
para acessar o banco de dados. O Lion não tinha um sistema PostgreSQL ou meu $ PATH foi configurado de maneira diferente. Faz um ano desde a última vez que me atrapalhei com isso, então não me lembro exatamente. Quanto ao usuário Unix ... com uma instalação Homebrew do PostgreSQL, o servidor é iniciado pelo launchd e o usuário é definido como o usuário local que o instalou, por padrão. As coisas são configuradas de maneira diferente no Mac OS X Server, que inicia automaticamente o PostgreSQLpostgres
.Não conheço nenhum arquivo de configuração para o cliente psql. No entanto, o psql respeita várias variáveis de ambiente que se correlacionam com as opções da linha de comandos.
Portanto, para que o psql use automaticamente o soquete de sua escolha, você pode definir a variável PGHOST no diretório que contém o soquete. ie
fonte
Experimentar:
ou
fonte
Tarde, mas achei útil: http://tammersaleh.com/posts/installing-postgresql-for-rails-3-1-on-lion
Isso era para o Lion, mas eu estava tendo os mesmos problemas do que este tópico depois de atualizar da 10.6.8 para o Mountain Lion e instalar o PostgreSQL via HomeBrew antes, na versão 10.6.8. Eu também tinha a
/var/pgsql_socket_alt
pasta misteriosa pós-atualização, mas eu a removi e criei/var/pgsql_socket
como sugerido por @wolftron. No entanto, essa não foi a solução final.Se eu deixasse em
unix_socket_directory
branco / comenteipostgresql.conf
, quaisquer projetos existentes antes da atualização reclamariam que o soquete/var/pgsql_socket
estava ausente. Mas se eu mudasse conf e codificassevar/pgsql_socket
, quaisquer novos projetos reclamariam que o soquete/tmp
estava ausente. Muito frustrante ... até que eu reinstaleipg gem
em um projeto anterior à 10.8 (gem uninstall pg && gem install pg
) e deixei ounix_socket_directory
comentário emconf
arquivo. Após uma rápidapg_ctl
reinicialização do servidor, os projetos novos e antigos funcionaram. Meu soquete pgsql mora/tmp
agora, fwiw.Nota: se você estiver usando o
activerecord-postgresql-adapter
gem, desinstale-o primeiro, depois reinstale a página e instaleactiverecord-postgresql-adapter
novamente.fonte
Acabei de me inscrever no dba SE, por isso não parece ser capaz de comentar sobre o post relevante (que besteira!).
No entanto, eu estava confiante de que estava no mesmo barco que o @thure. Eu tinha certeza de que o / usr / local / bin estava mais cedo no meu PATH do que o / usr / bin, havia verificado com quais binários o shell havia feito o hash com
which
etype
, etc.Eu vi os mesmos sintomas do @thure. Então eu tive uma epifania; Percebi que havia reconstruído a
pg
gema (estou usando Ruby) em um shell cujo PATH havia sido afetado adversamente pelo path_helper do Mac (que é executado em / etc / profile e coloca / usr / bin antes de / usr / local / bin) .Desinstalei o pg e reinstalei-o em um shell cujo PATH estava correto. De repente eu consegui me conectar!
Portanto, recompile as pessoas que vinculam o idioma e deixe que elas encontrem a cópia correta de (presumivelmente)
pg_config
.fonte
Encontrei esta resposta: https://stackoverflow.com/questions/10763143/in-rails-couldnt-create-database-for-adapter-postgresql E, por mais simples que fosse, funcionou para mim ... executou um
$bundle update
e começou a funcionar novamente.fonte
Eu descobri que o link simbólico do local real para o local esperado funcionou perfeitamente:
na linha da resposta aceita por @thure, mas mais simples.
fonte
Aqui está, 2016, El Capitan está lá fora, e a Apple continua mudando as coisas. O Postgres é instalado como parte do sistema operacional e o arquivo de configuração do postgres define a propriedade unix_socket_directories no postgresql.conf para / tmp. O soquete está em /tmp/.s.PGSQL.5432. Consegui solucionar o problema executando o seguinte:
Espero que isso ajude alguém.
fonte
Procure o arquivo de soquete correto
No resultado, obtenha o caminho para o arquivo e use o caminho com o parâmetro "-h" no comando psql
Por exemplo, é assim que eu me conecto ao banco de dados de calendário e contatos do servidor macOS (em uma sessão ssh no servidor):
Em seguida, o arquivo de soquete no caminho seria usado para conectar.
fonte
Por padrão, o postgres parece estar tentando se conectar através de soquetes de domínio unix. SOQUETE DE DOMÍNIO UNIX
Isso aconteceu comigo quando eu estava executando a instância do postgres no docker. Você precisa ver que tipo de conexão o servidor está aceitando. Para mim, era claramente soquete de domínio TCP e não unix.
A adição de sinalizador para aceitar o host redirecionou a conexão para corrigir o caminho e corrigiu o problema.
PS: soquetes de domínio Unix funcionam no nível do kernel e a conexão não precisa passar por todo o jazz necessário para as conexões TCP. Eles são bem rápidos e eficientes quando você deseja fazer a conexão com sua própria máquina a partir de um processo diferente, como parte da Comunicação entre processos.
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 executado sempre que o sistema for iniciado.5) Além disso, se você deseja 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
Não consigo encontrar rapidamente o link onde encontrei essa pepita, mas funcionou para mim.
exportar PGHOST = host local
Oh, aqui está o link. https://stackoverflow.com/questions/13868730/socket-file-var-pgsql-socket-s-pgsql-5432-missing-in-mountain-lion-os-x-ser
fonte
Eu recebi o mesmo erro ao tentar executar
psql
na linha de comando. Aconteceu que minha solução era muito mais simples. Eu configurei incorretamente a porta de escuta no arquivo de configuração: /etc/postgresql/9.4/main/postgres.conf . Alterei a porta de porta = 5432 para porta = 5433. Quando a alterei novamente para 5432, ela funcionou conforme o esperado.Para testar se você fez algo semelhante, você pode executar
$ psql -p5433
Há várias opções úteis como esta para o comando psql que você pode encontrar aqui: http://www.postgresql.org/docs/9.4/static/app-psql .html para que você possa testar sua própria configuração incorreta. Obviamente, você pode simplesmente remover seu último conjunto de alterações de configuração dos arquivos * .conf, para testar se essa é a fonte do seu problema. Eu acho que certamente vale a pena conferir antes de você mexer com permissões de arquivos e propriedades. (Apenas não se esqueça de/etc/init.d/postgresql restart
)O que NÃO consegui encontrar foi o arquivo de configuração que define os valores padrão para o comando da CLI psql. Alguém pode comentar com isso, por favor?
Para mim, sempre volto ao meu primeiro princípio de programação: "Normalmente sou a fonte de qualquer erro!"
fonte