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
Réponses:
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) .
/usr/local/var/postgres/
ou sur d'/usr/local/var/log/
autres systèmes/usr/var/postgres/
.server.log
). Sur les dernières lignes, vous verrez:rm postmaster.pid
Redémarrez votre serveur. Sur un Mac utilisant launchctl (avec homebrew), les commandes suivantes redémarreront le serveur.
OU sur les nouvelles versions de Brew
la source
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/…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émarragebrew install postgres
,ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
,launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
etARCHFLAGS="-arch x86_64" gem install pg
. Je ne sais pas combien d'autres solutions j'ai essayé avant de faire fonctionner cela.brew services restart postgresql
/usr/local/var/log/postgres.log
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
Cela redémarrera votre PostgreSQL, j'espère que cela vous sera utile.
la source
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
.pid
fichier en exécutant cette commande.Étape 3: redémarrez votre serveur
Utilisateurs Mac
Utilisateurs Linux
Enfin, redémarrez votre application et vous êtes prêt à partir.
la source
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:
que j'ai trouvé ici (réponse de pjammer en bas)
la source
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:
Après cela, vous devez créer un utilisateur et une base de données dans postgresql comme ceci:
Ensuite, vous pouvez voir ce qui suit dans votre terminal
Tapez-y:
Après cela, vous devez corriger votre
database.yml
. Vous avez probablement besoin de quelque chose comme ça:De plus, si vous avez des problèmes avec postgresql, c'est une bonne idée de vérifier pg_hba.conf
la source
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 :)
la source
Désinstaller pg:
Désinstaller postgres:
Nuke le dossier postgres qui pourrait persister avec un tas de choses périmées dans:
Redémarrer (peut-être inutile)
Réinstaller pg:
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:
Et commencez pg avec:
Réinstallez la gemme:
Et bobsyouruncle.
la source
lunchy stop postgres
suivi parlunchy start postgres
sudo apt purge postgresql
ou tout autrepostgresql
pachage devrait suffire et il détruira tout.vérifiez le fichier postgresql.conf (on se
ubuntu
trouve dans /etc/postgresql/XX/main/postgresql.conf ) et recherchez la ligne qui dit:essayez de le changer en:
ce serait accepter chaque IP, vérifiez ensuite la ligne qui dit:
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!
la source
Comme décrit par @Magne, l'erreur
PG::ConnectionBad - could not connect to server: Connection refused
peut être présentée après une mise à niveau de version majeure / mineure (par exemple,9.5 -> 9.6
ou9 -> 10
) de PostgreSQL.J'ai eu cette erreur après avoir exécuté
brew upgrade postgresql
aprè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 ...
... puis en le comparant à la PG_VERSION actuelle
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é:
Étape 2. Créez une nouvelle base de données vierge:
Étape 3. Vérifiez les anciennes et les nouvelles versions binaires:
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 .
-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
Étape 6. Déplacez le répertoire de données nouvellement créé à l'endroit où PostgreSQL s'attend à ce qu'il soit
Étape 7. Redémarrez 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)
Étape 9. (facultative) Après vous être assuré que tout fonctionne bien, vous pouvez exécuter regain d'espace disque avec la commande suivante:
... et si vous vous sentez vraiment courageux, vous pouvez supprimer l'ancien répertoire de données PostgreSQL avec la commande suivante
(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)
la source
C'est ce qui m'a vraiment aidé.
Référence: http://alumni.lewagon.org/questions/60
la source
Comme suggéré ci-dessus, je viens d'ouvrir l' application Postgres sur mon Mac, de cliquer sur Ouvrir
Psql
, de fermer lapsql
fenê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/
la source
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:
Si rien ne change:
Si rien ne change encore:
Dernière commande pour le corriger, suppression du fichier de verrouillage postgres en exécutant depuis root:
puis :
De berziiii: https://github.com/ga-wdi-boston/capstone-project/issues/325
J'espère que cela vous aidera :)
Cordialement !!
la source
Si vous rencontrez ce problème après avoir fait un
brew upgrade
mise à niveau de postgres vers une nouvelle version majeure (f.ex9.3.0
vers9.4.0
ou supérieure), procédez comme suit :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-être
chown
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
la source
Localisez votre fichier postgres il pourrait être
/usr/local/var/postgres/
ou/usr/var/postgres/
puis supprimez lepostmaster.pid
fichier présent dans ce dossier.la source
mettre
host: localhost
dans undatabase.yml
fichier et exécuter cette commande:la source
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.pid
fichier.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 server
dans le terminal.la source
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.
la source
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:
la source
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:
puis redémarrez le serveur et tout a fonctionné.
la source
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.
la source
Vous avez probablement redémarré votre ordinateur et oublié de lancer l'application Postgres.
la source
J'ai eu le même problème. I Vérifiez la dernière ligne de
PostgreSQL
fichiers 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 danspostgresql.conf
résolu mon problème.la source
Mon problème était dans mon fichier application.yml . Ma base
url
de donnéesheroku
n'utilisait pas le port 5342. Vérifiez votreheroku
configurationvar DATABASE_URL
. Assurez-vous que correspond exactement à était dans votre application.yml pour la base de données applicable.la source
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
la source
server.log
. Trouvé ma réponse ici: stackoverflow.com/questions/25970132/…Je viens d'exécuter cette commande
sudo service postgresql restart
et tout a fonctionné à nouveau.la source
J'ai arrêté le serveur de rails,
rake db:migrate
j'ai couru et démarré monrails s
.la source
J'ai rencontré cette erreur après avoir suivi une mise
brew upgrade
à jour de postgresql. J'ai trouvé exactement comment résoudre mon problème à partir de ce super article. J'ai pu récupérer et exécuter PostgreSQL et même migrer sur toutes mes bases de données existantes. https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgradela source
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.
Ensuite, j'ai exécuté cette commande pour accéder à postgres
Et à l'invite postgres, j'ai tapé "\ du" pour lister les rôles
Le rôle postgres manquait donc j'ai dû le créer avec cette commande
Cela a résolu mon problème et j'espère que cela aide quelqu'un d'autre.
la source
Vous n'avez pas besoin de supprimer le
postmaster.pid
fichier, car cela pourrait inviter à la corruption de données.Option? Simplement
kill
le processus (ne pas utiliserkill -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:
Localisez et ouvrez le
postmaster.pid
fichier (le mien est sur Mac Sierra)vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid
Copiez le PID - c'est le numéro sur la première ligne du
postmaster.pid
fichierkill PID
, par exemple, si mon PID est 381, je feraikill 381
brew services start postgresql
. Ou si vous utilisez postgresapp, cliquez simplement sur lestart
boutonla source
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
la source