PG :: ConnectionBad - impossible de se connecter au serveur: connexion refusée

271

Chaque fois que j'exécute mon serveur rails 4.0, j'obtiens cette sortie.

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>'

J'utilise Mavericks OS X 10.9, donc je ne sais pas si c'est le problème. J'ai tout essayé mais rien ne semble fonctionner. J'ai désinstallé et installé plusieurs fois postgres et le gem pg maintenant.

Ceci est mon fichier 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
la source
2
essayez d'ajouter «host: localhost» dans votre database.yml, obtenu à partir de stackoverflow.com/a/10793186/919641
Surendra Bobba
1
@trajan Je l'ai déjà fait. J'ai même utilisé ce fil lorsque j'ai commencé à rechercher une solution. J'ai publié mon fichier database.yml. Vous pouvez y jeter un œil. Cela pourrait peut-être aider.
fadelakin
montrez votre pg_hba.conf
Pronix
2
N'oubliez pas d'activer l'application postgres si vous l'utilisez.
Pavan Katepalli
1
Merci de me rappeler d'activer l'application @PavanKatepalli! Bon appel;)
catch22

Réponses:

638

Cela pourrait être aussi simple qu'un fichier PID périmé . Cela peut échouer en silence car votre ordinateur n'a pas complètement terminé le processus d'arrêt, ce qui signifie que postgres n'a pas supprimé le fichier PID (process id).

Le fichier PID est utilisé par postgres pour s'assurer qu'une seule instance du serveur est en cours d'exécution à la fois. Donc, quand il recommence, il échoue car il existe déjà un fichier PID qui indique à postgres qu'une autre instance du serveur a été démarrée (même s'il n'est pas en cours d'exécution, il n'a tout simplement pas pu arrêter et supprimer le PID) .

  1. Pour le corriger, supprimez / renommez le fichier PID. Recherchez le répertoire de données postgres. Sur macOS utilisant homebrew, il se trouve /usr/local/var/postgres/ou sur d' /usr/local/var/log/autres systèmes /usr/var/postgres/.
  2. Pour vous assurer que c'est bien le problème, consultez le fichier journal ( server.log). Sur les dernières lignes, vous verrez:

FATAL: le fichier de verrouillage "postmaster.pid" existe déjà.
CONSEIL: Un autre postmaster (PID 347) s'exécute-t-il dans le répertoire de données "/ usr / local / var / postgres"?

  1. Si c'est le cas, rm postmaster.pid
  2. Redémarrez votre serveur. Sur un Mac utilisant launchctl (avec homebrew), les commandes suivantes redémarreront le serveur.

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

    OU sur les nouvelles versions de Brew

    brew services restart postgresql
Chris Slade
la source
24
# 2 est une excellente suggestion: "Vérifiez server.log". Mon erreur a été effectivement causé par la mise à niveau de Yosemite, le journal du serveur dit: FATAL: could not open directory "pg_tblspc": No such file or directory. Cette réponse m'a aidé avec ce problème stackoverflow.com/questions/25970132/…
Paul Kaplan
20
J'ai juste voté en faveur de cela parce que cela m'a donné assez pour résoudre le problème du style de la terre brûlée. J'ai désinstallé pg ( gem uninstall pg), désinstallé postgres ( brew uninstall postgres), puis supprimé le dossier postgres qui persistait avec un tas de trucs périmés dans ( rm -rf /usr/local/var/postgres). Après un redémarrage brew install postgres, ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents, launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plistet ARCHFLAGS="-arch x86_64" gem install pg. Je ne sais pas combien d'autres solutions j'ai essayé avant de faire fonctionner cela.
IAmNaN
2
le fichier postmaster.opts est-il le même que le fichier postmaster.pid?
ARTLoe
31
Pour les nouveaux utilisateurs de Brew, la commande pour # 4 estbrew services restart postgresql
streetlogics
7
Pour moi (MAC, homebrew), le fichier journal était/usr/local/var/log/postgres.log
DZack
44

Après beaucoup de recherches et d'analyses, j'ai trouvé une solution si vous utilisez ubuntu, écrivez simplement cette commande dans votre terminal et appuyez sur Entrée

sudo service postgresql restart

Cela redémarrera votre PostgreSQL, j'espère que cela vous sera utile.

Jai Kumar Rajput
la source
3
Merci mille fois. Je viens de mettre à jour ma version ubuntu et cela a été corrigé pour moi.
Mauricio Moraes
Bien que la question se réfère à OSX Mavericks, cette slution est pratique pour les installations Ubuntu quand quelque chose de bizarre se produit lors de la migration ou du démarrage du serveur.
Jerome
39

Ce problème survient lorsque postgres ne s'arrête pas correctement. Voici comment j'ai résolu ce problème en trois étapes simples.

Étape 1: accédez à votre répertoire postgres

Les utilisateurs de Mac trouveront cela dans /usr/local/var/postgres, d'autres pourraient regarder /usr/var/postgres/.

Étape 2: supprimez le .pidfichier en exécutant cette commande.

rm postmaster.pid

Étape 3: redémarrez votre serveur

Utilisateurs Mac

brew services restart postgresql

Utilisateurs Linux

sudo service postgresql restart

Enfin, redémarrez votre application et vous êtes prêt à partir.

techdreams
la source
33

J'ai réussi à résoudre le problème en suivant la réponse de Chris Slade, mais pour redémarrer le serveur, j'ai dû utiliser les commandes suivantes:

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

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

que j'ai trouvé ici (réponse de pjammer en bas)

Andrea Gherardi
la source
25

Avez-vous installé postgresql sur votre système? Sinon, regardez Installer postgresql . Après avoir réussi à intégrer postgresql dans votre système, vous pouvez taper quelque chose comme ça dans votre terminal système:

which psql
#=> /usr/bin/psql

Après cela, vous devez créer un utilisateur et une base de données dans postgresql comme ceci:

sudo su - postgres
psql

Ensuite, vous pouvez voir ce qui suit dans votre terminal

postgres=#

Tapez-y:

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

Après cela, vous devez corriger votre database.yml. Vous avez probablement besoin de quelque chose comme ça:

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

De plus, si vous avez des problèmes avec postgresql, c'est une bonne idée de vérifier pg_hba.conf

Mihail Davydenkov
la source
1
Je l'ai installé mais l'emplacement est à / usr / local / bin / psql et quand
j'exécute
psql devrait fonctionner si vous souhaitez utiliser pg dans votre application. Essayez de saisir le terminal psql metals-directory_development. Des résultats? Sinon, essayez de réinstaller postgres, essayez ceci par exemple
Mihail Davydenkov
Lorsque j'exécute psql metals-directory_development, j'obtiens psql: impossible de se connecter au serveur: aucun fichier ou répertoire de ce type Le serveur fonctionne-t-il localement et accepte-t-il les connexions sur le socket de domaine Unix "/tmp/.s.PGSQL.5432"? Je suis un programmeur de rails débutant et je n'ai aucune idée de ce que cela signifie. J'ai essayé de réinstaller postgres plusieurs fois mais pas de chance.
fadelakin
23

Pour résoudre ce type de problèmes avec Postgres et de travailler avec Postgres sur Mac OSX, ce qui est probablement la meilleur et la EASIEST solution que jeai trouvéce jour:

http://postgresapp.com/

Téléchargez, installez et soyez heureux :)

KM Rakibul Islam
la source
19
  1. Désinstaller pg:

    gem uninstall pg
  2. Désinstaller postgres:

    brew uninstall postgres
  3. Nuke le dossier postgres qui pourrait persister avec un tas de choses périmées dans:

    rm -rf /usr/local/var/postgres
  4. Redémarrer (peut-être inutile)

  5. Réinstaller pg:

    brew install postgres
  6. Mon commentaire dans la réponse de Chris Slade commence pg à la dure, maintenant j'utilise des services de brassage qui ont simplifié ma vie à bien des égards:

    brew install services
  7. Et commencez pg avec:

    brew services start postgresql
  8. Réinstallez la gemme:

    gem install pg

Et bobsyouruncle.

IAmNaN
la source
3
Soyez prudent avec cette méthode ... il s'agit d'une approche de la terre brûlée et détruira très probablement tous les dbs locaux que vous avez actuellement. Jetez un oeil sur github.com/copiousfreetime/launchy où vous pourriez être en mesure de faire lunchy stop postgressuivi parlunchy start postgres
lacostenycoder
sur ubuntu je crois sudo apt purge postgresqlou tout autre postgresqlpachage devrait suffire et il détruira tout.
Fabrizio Bertoglio
J'ai fait cela et j'ai maintenant l'erreur suivante: postgresql_adapter.rb: 709: dans `rescue in connect ': FATAL: la base de données" project3_development "n'existe pas (ActiveRecord :: NoDatabaseError). Que devrais-je faire ? Je peux voir la base de données en rubymine.
Franky Doul
13

vérifiez le fichier postgresql.conf (on se ubuntutrouve dans /etc/postgresql/XX/main/postgresql.conf ) et recherchez la ligne qui dit:

listen_addresses="localhost"

essayez de le changer en:

listen_addresses="*"

ce serait accepter chaque IP, vérifiez ensuite la ligne qui dit:

port=5432

et vérifiez si c'est le même port de votre database.yml, par défaut sur mon postgresql-9.2 utilisez 5433 au lieu de 5432 , n'oubliez pas de redémarrer le serveur postgres,

Bonne chance!

Alexis
la source
C'était aussi mon problème. Je soupçonne que cela s'est produit parce que j'avais déjà 9.3 en cours d'exécution lorsque j'ai essayé de «mettre à niveau» (c'est-à-dire installer 9.5). Je suppose qu'il essayait d'être poli et de se configurer pour s'exécuter en parallèle sur un port différent plutôt que de prendre en charge l'installation / le processus existant.
Joel Fouse
12

Comme décrit par @Magne, l'erreur PG::ConnectionBad - could not connect to server: Connection refusedpeut être présentée après une mise à niveau de version majeure / mineure (par exemple, 9.5 -> 9.6ou9 -> 10 ) de PostgreSQL.

J'ai eu cette erreur après avoir exécuté brew upgrade postgresqlaprès la sortie de la version 9.6 de PostgreSQL. Le problème est que les mises à niveau de versions majeures / mineures nécessitent des étapes supplémentaires pour migrer l'ancienne date vers la nouvelle version.

Comment vérifier si c'est votre problème

Vous pouvez vérifier si c'est le problème en vérifiant la dernière version de la formule de brassage PostgreSQL installée avec 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

... puis en le comparant à la PG_VERSION actuelle

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

Si la PG_VERSION est inférieure à la dernière formule de brassage et que la différence est un changement de version majeur / mineur, c'est probablement votre problème.

Comment corriger (c'est-à-dire comment mettre à niveau les données)

Les instructions ci-dessous concernent une mise à niveau de 9.5 à 9.6. Modifiez les numéros de version en fonction de votre propre mise à niveau

Étape 1. Assurez-vous que PostgreSQL est désactivé:

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

Étape 2. Créez une nouvelle base de données vierge:

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

Étape 3. Vérifiez les anciennes et les nouvelles versions binaires:

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

Notez que dans cet exemple, je passe du binaire 9.5.4 au binaire 9.6.1

Étape 4. Migrez les données actuelles vers la nouvelle base de données à l'aide de l'utilitaire 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 l'indicateur spécifie le répertoire de données actuel
  • -D l'indicateur spécifie le nouveau répertoire de données à créer
  • -b spécifie l'ancien binaire
  • -B spécifie le nouveau binaire que nous mettons à niveau

Étape 5. Éloignez l'ancien répertoire de données

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

Étape 6. Déplacez le répertoire de données nouvellement créé à l'endroit où PostgreSQL s'attend à ce qu'il soit

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

Étape 7. Redémarrez PostgreSQL

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

Étape 8. Si vous utilisez le gem pg pour Rails, vous devez recompiler en désinstallant et réinstallant le gem (sautez cette étape si vous n'utilisez pas le gem pg)

$ gem uninstall pg
$ gem install pg

Étape 9. (facultative) Après vous être assuré que tout fonctionne bien, vous pouvez exécuter regain d'espace disque avec la commande suivante:

brew cleanup postgresql

... et si vous vous sentez vraiment courageux, vous pouvez supprimer l'ancien répertoire de données PostgreSQL avec la commande suivante

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

(Cette réponse est basée sur un excellent article de blog https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ avec quelques ajouts)

Neil Atkinson
la source
7

Comme suggéré ci-dessus, je viens d'ouvrir l' application Postgres sur mon Mac, de cliquer sur Ouvrir Psql, de fermer la psqlfenêtre, de redémarrer mon serveur de rails dans mon terminal, et cela fonctionnait à nouveau, plus d'erreur.

Faites confiance à l'éléphant: http://postgresapp.com/

houstongolden
la source
6

J'ai eu le même problème après avoir mis à jour mon mac sur Osx Movaje.

j'ai trouvé cette solution:

Essayez d'abord la ligne de commande ci-dessous dans votre terminal:

brew services restart postgresql

Si rien ne change:

ps aux | grep postgres

Si rien ne change encore:

ls -ls | grep post

Dernière commande pour le corriger, suppression du fichier de verrouillage postgres en exécutant depuis root:

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

puis :

brew services restart postgresql

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

J'espère que cela vous aidera :)

Cordialement !!

Basile
la source
5

Si vous rencontrez ce problème après avoir fait un brew upgrade mise à niveau de postgres vers une nouvelle version majeure (f.ex 9.3.0vers 9.4.0ou supérieure), procédez comme suit :

Correction de @ dmitrygusev sur https://github.com/Homebrew/homebrew/issues/35240

Le guide officiel de migration [Postgresql] a aidé:

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

C'est tout. Vérifiez si l'importation s'est bien passée, puis supprimez les sauvegardes:

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

Le problème ici est que sur une mise à niveau majeure de postgres, il est nécessaire de recréer / migrer votre base de données. Et peut-êtrechown répertoires ou appeler manuellementinitdb .

Voir également: Comment mettre à niveau PostgreSQL de la version 9.5 à la version 9.6 sans perdre de données?


Quelques autres conseils, qui pourraient être utiles, au cas où vous n'utilisez pas Homebrew:

Comment arrêter le serveur PG manuellement:

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

Comment démarrer le serveur PG manuellement:

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

Magne
la source
4

Localisez votre fichier postgres il pourrait être /usr/local/var/postgres/ou /usr/var/postgres/puis supprimez le postmaster.pidfichier présent dans ce dossier.

Awais Shafqat
la source
3

mettre host: localhostdans un database.ymlfichier et exécuter cette commande:

rake db:create db:migrate  
Abel
la source
2

Les utilisateurs de Mac avec l'application Postgres peuvent souhaiter ouvrir l'application (recherchez Postgres ou recherchez l'icône d'éléphant dans votre barre de menus). Vous pouvez y voir un X rouge avec le message: "Stale postmaster.pid file". Malheureusement, une recherche Spotlight n'affichera pas l'emplacement de ce fichier. Cliquez sur "Paramètres du serveur ...", et dans la boîte de dialogue qui s'ouvre, cliquez sur le bouton "Afficher" pour ouvrir le répertoire de données. Naviguez dans un dossier (pour moi, c'était "var-10") et supprimez le postmaster.pidfichier.

Revenez à l'application Postgres et cliquez sur le bouton Démarrer. Ce X rouge devrait se transformer en une coche verte avec le message "Running". Vous devriez maintenant pouvoir exécuter avec succès les commandes Rails comme rails serverdans le terminal.

Paramètres du serveur d'applications Postgres - Afficher le répertoire de données

chemturion
la source
Cela l'a résolu pour moi. Merci beaucoup pour la solution! C'était un processus!
boyd
2

Je viens d'avoir ce problème ce soir, en travaillant sur une application de rails sur laquelle je travaille depuis un certain temps. Mon problème est simplement dû au fait que mon serveur postgresql ne fonctionnait pas .

Je suis allé en haut de l'écran (je suis sur un Mac) et j'ai cliqué sur la petite icône d'éléphant et cliqué sur 'Démarrer'.

Allume notre serveur n'était pas allumé.

J'espère que cela fournit une solution simple pour quelqu'un.

solidstatejake
la source
1

C'est certainement la réponse de @Chris Slade qui m'a aidé.

J'ai écrit un petit script pour tuer ces processus restants si utile:

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
la source
1

J'ai eu le même problème en production (le développement a tout fonctionné), dans mon cas le serveur DB n'est pas sur la même machine que l'application, donc finalement ce qui a fonctionné est juste de migrer en écrivant:

bundle exec rake db:migrate RAILS_ENV=production

puis redémarrez le serveur et tout a fonctionné.

Horrible
la source
1

Je sais que c'est en retard mais cela pourrait aider quelqu'un. J'avais le même problème. Il s'avère que j'aurais deux versions de postgres 9.1 et 9.5. J'ai désinstallé 9.1 et 9.5 et réinstallé 9.5 et cela a fonctionné pour moi.

Darshan Chauhan
la source
1

Vous avez probablement redémarré votre ordinateur et oublié de lancer l'application Postgres.

The Whiz of Oz
la source
1

J'ai eu le même problème. I Vérifiez la dernière ligne de PostgreSQLfichiers journaux /var/log/postgresql. Il y avait un paramètre de configuration non reconnu dans le fichier /etc/postgresql/9.5/main/postgresql.conf . Commentant la ligne d'erreur dans postgresql.confrésolu mon problème.

Hajar Homayouni
la source
1

Mon problème était dans mon fichier application.yml . Ma base urlde données herokun'utilisait pas le port 5342. Vérifiez votre herokuconfiguration var DATABASE_URL. Assurez-vous que correspond exactement à était dans votre application.yml pour la base de données applicable.

NickDK
la source
1

J'ai eu le même problème, cette explication l'a résolu pour moi: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/

l'étape clé consistait à regarder la queue de mon /usr/local/var/postgres/server.log , qui m'a permis de voir quel était le vrai problème, à savoir que je n'avais pas complètement terminé le processus de mise à niveau de PostgreSQL

Ben Wheeler
la source
Situation similaire ici - la clé pour moi aussi était de regarder server.log. Trouvé ma réponse ici: stackoverflow.com/questions/25970132/…
Nathan Wallace
1

Je viens d'exécuter cette commande sudo service postgresql restart et tout a fonctionné à nouveau.

Kalibbala
la source
0

J'ai arrêté le serveur de rails, rake db:migratej'ai couru et démarré mon rails s.

thedanotto
la source
0

Je viens d'avoir ce problème et aucune des solutions suggérées n'a fonctionné pour moi. Après beaucoup de recherches sur Google, j'ai trouvé une solution. C'est ce qui a fonctionné pour moi.

Tout d'abord, j'ai dû exécuter cette commande pour démarrer le serveur et je suppose que définir l'emplacement du fichier de configuration.

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

Ensuite, j'ai exécuté cette commande pour accéder à postgres

psql postgres

Et à l'invite postgres, j'ai tapé "\ du" pour lister les rôles

postgres=# \du

Le rôle postgres manquait donc j'ai dû le créer avec cette commande

CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;

Cela a résolu mon problème et j'espère que cela aide quelqu'un d'autre.

luis.madrigal
la source
0

Vous n'avez pas besoin de supprimer le postmaster.pidfichier, car cela pourrait inviter à la corruption de données.

Option? Simplement killle processus (ne pas utiliser kill -9, juste un kill ordinaire fera l'affaire).

Ensuite, redémarrez simplement le serveur postgres et vous êtes prêt à partir!

Voici les étapes pour y parvenir:

  1. Localisez et ouvrez le postmaster.pidfichier (le mien est sur Mac Sierra)

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

  2. Copiez le PID - c'est le numéro sur la première ligne du postmaster.pidfichier

  3. Tuez le processus avec kill PID, par exemple, si mon PID est 381, je feraikill 381
  4. Redémarrez Postres - si vous utilisez une infusion, faites-le brew services start postgresql. Ou si vous utilisez postgresapp, cliquez simplement sur le startbouton
Ruto Collins
la source
0

Le gestionnaire de paquets Homebrew comprend des listes de lancement pour démarrer automatiquement. Pour plus d'informations, exécutez brew info postgres.

Démarrer manuellement:

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

Arrêtez manuellement:

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

Démarrer automatiquement:

"Pour que launchd démarre postgresql maintenant et redémarre à la connexion:"

brew services start postgresql

user3402754
la source