Après avoir fait la mise à jour et la mise à niveau de la bière, mes postgres ont eu un problème. J'ai essayé de désinstaller postgres et de réinstaller, mais cela n'a pas fonctionné aussi bien.
Ceci est le message d'erreur. (J'ai également reçu ce message d'erreur lorsque j'essaie de faire râteau db: migrer)
$ psql
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Comment puis-je le résoudre?
Version Mac: Mountain lion.
version homebrew: 0.9.3
version postgres: psql (PostgreSQL) 9.2.1
Et c'est ce que j'ai fait.
12:30 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.2.1...
12:31 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.1.4...
12:31 ~/D/works$ psql --version
bash: /usr/local/bin/psql: No such file or directory
12:33 ~/D/works$ brew install postgresql
==> Downloading http://ftp.postgresql.org/pub/source/v9.2.1/postgresql-9.2.1.tar.bz2
Already downloaded: /Library/Caches/Homebrew/postgresql-9.2.1.tar.bz2
......
......
==> Summary
/usr/local/Cellar/postgresql/9.2.1: 2814 files, 38M, built in 2.7 minutes
12:37 ~/D/works$ initdb /usr/local/var/postgres -E utf8
The files belonging to this database system will be owned by user "laigary".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".
initdb: directory "/usr/local/var/postgres" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/usr/local/var/postgres" or run initdb
with an argument other than "/usr/local/var/postgres".
12:39 ~/D/works$ mkdir -p ~/Library/LaunchAgents
12:39 ~/D/works$ cp /usr/local/Cellar/postgresql/9.2.1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
12:39 ~/D/works$ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
homebrew.mxcl.postgresql: Already loaded
12:39 ~/D/works$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
12:39 ~/D/works$ env ARCHFLAGS="-arch x86_64" gem install pg
Building native extensions. This could take a while...
Successfully installed pg-0.14.1
1 gem installed
12:42 ~/D/works$ psql --version
psql (PostgreSQL) 9.2.1
12:42 ~/D/works$ psql
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Maintenant, après avoir réinstallé howbrew, lorsque j'utilise $ psql
, il n'affiche aucun message d'erreur.
Mais je cours rake db:migrate
dans mon application rails, ça montre:
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"?
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `connect'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:309:in `new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:319:in `checkout_new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:241:in `block (2 levels) in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `loop'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `block in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:233:in `checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:96:in `block in connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:404:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:170:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:144:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:107:in `rescue in create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:51:in `create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (3 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (2 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `call'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:88:in `top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:66:in `block in run'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:63:in `run'
/usr/local/bin/rake:32:in `<main>'
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"riy_development", "pool"=>5, "username"=>nil, "password"=>nil}
Enfin je trouve la solution.
$ sudo mkdir /var/pgsql_socket/
$ sudo ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/
Cette solution est peu délicate, mais elle fonctionne. J'espère que tout le monde a une meilleure solution
Mise à jour
Cela fonctionne aussi pour moi.
rm /usr/local/var/postgres/postmaster.pid
la source
brew postgresql-upgrade-database
Réponses:
Eu un problème similaire; un fichier pid bloquait le démarrage de postgres. Réparer:
rm /usr/local/var/postgres/postmaster.pid
et puis tout va bien.
la source
rm: /usr/local/var/postgres/postmaster.pid: No such file or directory
tail /usr/local/var/postgres/server.log
Cela peut parfois être un problème avec une mise à niveau postgres.
Dans mon cas, cela s'est produit lors de la mise à niveau de 9.3 vers 9.4.
Voir http://www.postgresql.org/docs/9.4/static/upgrading.html
OS X / Homebrew:
Essayez
postgres -D /usr/local/var/postgres
de lancer - cela vous donnera une sortie beaucoup plus détaillée si postgres ne démarre pas.Dans mon cas, l'exécution a
rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8
supprimé mes anciennes bases de données, puis a réinitialisé le schéma db postgres.Merci à https://github.com/Homebrew/homebrew/issues/35240 pour cette solution.
Après avoir régénéré mes bases de données (avec
rake db:create
) tout a bien fonctionné à nouveau.la source
postgres -D /usr/local/var/postgres
vous indique que le répertoire de données a été initialisé avec une version antérieure et incompatible de Postgres, et que vous ne voulez pas perdre vos données locales, vous pouvez essayer ce filpg_ctl -D /usr/local/var/postgres -l logfile start
puis mon serveur a démarré en arrièrebrew services start postgres
sur OSX pour démarrer les postgres en arrière-plan au lieu depostgres -D /usr/local/var/postgres
Trouvé une solution qui a fonctionné pour moi ici:
/dba/75214/psql-could-not-connect-to-server-no-such-file-or-directory
Vous exécutez essentiellement la commande suivante pour démarrer manuellement le serveur:
la source
Si l'installation et la désinstallation de postgres avec brew ne fonctionne pas pour vous, consultez les journaux de votre installation de postgresql ou:
si vous voyez ce type de sortie:
Essayez ensuite ce qui suit:
Démarrez ensuite le serveur:
La source
la source
Sur Yosemite, si le fichier pid empêche Postgres de démarrer et que vous avez un
launchctl
démon essayant (et échouant) de charger les démons de base de données, alors vous devrez décharger le fichier plist:Ensuite, supprimez le fichier pid
Rechargez ensuite le
launchctl
démonla source
Pour toute personne lisant ceci et utilisant Postgres.app, vous devrez peut-être
host: localhost
dans votre database.yml. http://postgresapp.com/documentation#toc_3la source
La mise à niveau de la base de données fonctionne pour moi
brew postgresql-upgrade-database
la source
travaillé pour moi!
la source
Vérifiez que le fichier socket existe.
Si ce n'est pas le cas, vérifiez dans votre postgresql.conf la modification d'unix_socket_directory.
la source
$ ls -l /tmp/.s.PGSQL.5432 ls: /tmp/.s.PGSQL.5432: No such file or directory $ grep unix_socket /usr/local/var/postgres/postgresql.conf #unix_socket_directory = '' # (change requires restart) #unix_socket_group = '' # (change requires restart) #unix_socket_permissions = 0777 # begin with 0 to use octal notation
$ mkdir /var/pgsql_socket/
$ sudo mkdir /var/pgsql_socket/
$ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/
Cette solution est peu délicate, mais elle fonctionne. J'espère que tout le monde a une meilleure solutionLe problème peut également être attribué à un processus en panne qui a laissé le fichier postmaster.pid derrière. Je fais cela et je travaille:
la source
La façon la plus infaillible de contourner cela est de faire
Cela gardera votre autorisation d'utilisateur, etc. tout intact et tout sera réinitialisé à nouveau. Fonctionne tout le temps!
la source
rm /usr/local/var/postgres/postmaster.pid
sur mac os ne fonctionne pas, utilisez cette commande.Le problème est dû au fait qu'il existe déjà un service en cours d'exécution sur le port 5432 et que nous ne pouvons pas établir de connexion de socket psql via ce port.
J'ai supprimé le fichier socket
Ensuite, j'ai réinitialisé les services postgres
Cela a fonctionné pour moi.
la source
Changer les paramètres de configuration postresql ou database.yml, changer $ PATH ou créer des liens symboliques n'était pas nécessaire pour moi. Tout ce que je devais faire était
gem uninstall pg
et puisbundle
(ougem install pg
).Le problème était que le pg gem avait été installé avant les postgres homebrew, tout comme les paramètres de la version de postgres fournie avec MacOS. La réinstallation (et donc la reconstruction de l'extension native) a résolu le problème.
la source
Cela m'est arrivé lors de la mise à niveau de la version 9.3.4 vers la version 9.5, car les bases de données sont incompatibles sans mise à niveau.
J'ai utilisé pg_upgrade comme suit:
Arrêtez les postgres
Mettez à niveau les bases de données:
Archivez les anciennes bases de données:
Redémarrez les postgres:
Gems mis à jour (pour les rails / enregistrement actif):
la source
C'est en fait ce que vous êtes censé faire:
vous devriez plutôt regarder /usr/local/var/postgres/postmaster.pid
puis regardez la première ligne du fichier - c'est le mauvais PID
Courir
par exemple:
alors fais
par exemple
En supposant qu'il fonctionne toujours
/superuser/553045/fatal-lock-file-postmaster-pid-already-exists
n'écoutez pas la réponse acceptée elle est mauvaise et corrompra vos données !!!
la source
Option psql
-h nom d'hôte --host = nom d'hôte
: Spécifie le nom d'hôte de la machine sur laquelle le serveur s'exécute. Si la valeur commence par une barre oblique, elle est utilisée comme répertoire pour le socket de domaine Unix.
Exécutez psql avec l'option -host
Pas besoin de faire un lien doux
la source
Nous avons également rencontré ce problème sur MacOS Sierra et lorsque nous avons exécuté pg_ctl comme décrit ci-dessus, nous avons ensuite eu l'erreur suivante
pg_ctl: no database directory specified and environment variable PGDATA unset
. Nous avons donc suivi les étapes ici qui ont résolu notre problème, à savoir:mkdir ~/.postgres
initdb ~/.postgres
pg_ctl -D ~/.postgres start
la source
Si postgres a été installé en utilisant homebrew, vous pouvez résoudre ce problème en exécutant:
la source
Cela a fonctionné pour moi (comme un mélange de réponses précédentes):
Source: https://coderwall.com/p/zf-fww/postgres-on-osx-with-homebrew-not-running-after-osx-crash
la source
Si vous arrêtez votre système sans quitter psql, postgres n'aurait pas supprimé certains fichiers.
Je n'ai pas trouvé le fichier postmaster.pid à l'emplacement usr / local / var / postgres
J'ai donc fait ce qui suit:
La commande ci-dessus devrait vous permettre de démarrer postgres
la source
J'ai rencontré ce problème après avoir essayé de restaurer / supprimer / créer une base de données alors que d'autres processus y accédaient. Le correctif MacOSX / Homebrew était:
rails server
,rails console
,guard
, etc ...brew info postgres
la source
FWIW, cela m'est arrivé aujourd'hui, mais ce qui s'est passé, c'est que j'exécutais des mises à jour Ubuntu à l'époque, qui mettaient probablement à jour Postgres. Une fois la mise à jour terminée, j'ai pu me connecter sans accroc.
Par souci d'exhaustivité, j'essayais de récupérer des enregistrements de la base de données à partir d'une console Rails:
la source
Il semble que votre psql ne fonctionne pas. Vous devez l'exécuter avant de vous connecter. Vous ne pouvez le faire qu'en utilisant Postgres.app pour Mac OS uniquement. (Téléchargez et installez cette application http://postgresapp.com ) Ouvrez l'application et vous avez un serveur PostgreSQL prêt et en attente de nouvelles connexions. Fermez l'application et le serveur s'arrête. Vous pouvez également trouver ces informations ici http://www.postgresql.org/download/macosx/ . J'espère que cela vous aidera.
la source
C'est parce qu'un serveur précédent est toujours en cours d'exécution, essayez de tout fermer et de relancer votre application.
la source
Pour ceux qui utilisent cette commande et ne fonctionnent pas ou le fichier n'est pas là et utilise Ruby on Rails
Ou toute autre commande et continue d'échouer.
J'ai résolu ce problème de désinstallation avec Brew. J'ai dû désinstaller avec brew 2 fois, car lors de la première désinstallation, il restera une autre version de postgresql, avec la deuxième désinstallation, le processus sera terminé.
Installer PostgreSQL avec Brew
Puis déposez, créez et migrez les bases de données du projet
(N'oubliez pas de démarrer le serveur postgresql)
la source
J'ai le même problème parce que j'utilise un mauvais nom d'utilisateur Postgres dans le code. Je me suis connecté à postgres
psql -d postgres
et j'entre\du
pour prendre le nom du rôle et corriger le nom d'utilisateur de Postgres.Donc, lorsque vous êtes confrontés à ce problème, vous devez vous assurer que vous utilisez le nom d'utilisateur, le mot de passe, le nom d'hôte et la base de données Postgres corrects ...
J'espère que cela aidera n'importe qui
la source
¿Avez-vous récemment changé le pg_hba.conf? si vous venez de vérifier toute faute de frappe:
"local" concerne uniquement les connexions socket de domaine Unix
local tout tout mot de passe
Connexions locales IPv4:
héberger tous tous les mots de passe 127.0.0.1/32
Connexions locales IPv6:
hébergez tous tous :: 1/128 mot de passe
Parfois, une simple erreur peut nous donner mal à la tête. J'espère que cette aide et désolé si mon anglais n'est pas bon du tout.
la source
Cela se produit lorsque le serveur postgres n'est pas en cours d'exécution. Étapes pour installer correctement Postgres via Homebrew sur MAC:
brew install postgres
initdb /Users/<username>/db -E utf8
[Cela initialise postgres pour utiliser le répertoire donné comme répertoire de base de données. Normalement, il n'est pas conseillé d'utiliser le répertoire utilisateur pour le stockage de la base de données. Modifier le fichier sudoers pour ajouter initdb et des commandes similaires, puis exécuter initdb sur / usr / local / var / postgres]pg_ctl -D /Users/<username>/db -l logfile start
[Après avoir réussi l'étape 2, il vous demandera d'exécuter l'étape 3. Cette commande démarre manuellement le serveur.]la source
J'ai cette même erreur. Il s'avère que les postgres ne fonctionnaient tout simplement pas (il est généralement toujours exécuté en arrière-plan, mais pour une raison quelconque, ce n'était pas le cas aujourd'hui).
Si tel est le cas, tapez simplement
postgres
la ligne de commande de votre répertoire de projetla source
Après une énorme quantité de va-et-vient, c'est vraiment la
pg
version gem que j'utilisais. Sur mavericks, lapg
version0.15.1
ne se connecterait pas au port 5432 mais la version0.17.1
fonctionne très bien - très étrange.la source