web-dev-qa-db-fra.com

PostgreSQL 9.2.4 (Windows 7) - Le service ne démarre pas, "impossible de charger pg_hba.conf"

J'essaie de faire fonctionner Postgres 9.2.4 en tant que service sous Windows 7. Après l'installation de Postgres, le service fonctionnait correctement. Cependant, après avoir configuré postgres en tant que serveur pour un autre programme, le service a cessé de fonctionner. Lorsque j'essaie de démarrer le service maintenant, je reçois un message disant:

"Le service postgresql-x64-9.2 - PostgreSQL Server 9.2 sur l’ordinateur local A été démarré puis arrêté. Certains services s’arrêtent automatiquement si Ne sont pas utilisés par d’autres services ou programmes."

Lorsque j'essaie d'exécuter le programme devant utiliser le serveur de base de données, j'obtiens cette erreur:

"Un problème est survenu lors de la tentative de connexion ou de création de la base de données de production . Détails: Impossible de se connecter au serveur. Impossible de se connecter à une prise distante. L'application doit maintenant se fermer"

J'ai aussi rencontré cette erreur une fois en ouvrant le même programme:

"Un problème est survenu lors de la tentative de connexion ou de création de la base de données de production . Détails: FATAL: impossible de charger pg_hba.conf. L’application Doit maintenant se fermer."

J'ai essayé d'exécuter le service connecté en tant que compte système local ainsi que mon propre compte (dans les propriétés du service postgres) sans succès. J'ai aussi essayé de redémarrer mon ordinateur. Après beaucoup de dépannage en ligne, j'ai appris qu'une bonne chose à vérifier est le fichier pg_log. Voici le contenu de la dernière entrée de pg_log:

2013-05-29 14:59:45 MDT LOG:  database system was interrupted; last known up at 2013-05-29 14:58:01 MDT
2013-05-29 14:59:45 MDT LOG:  database system was not properly shut down; automatic recovery in progress
2013-05-29 14:59:45 MDT LOG:  record with zero length at 0/175BB98
2013-05-29 14:59:45 MDT LOG:  redo is not required
2013-05-29 14:59:45 MDT LOG:  database system is ready to accept connections
2013-05-29 14:59:45 MDT LOG:  autovacuum launcher started
2013-05-29 15:07:00 MDT LOG:  local connections are not supported by this build
2013-05-29 15:07:00 MDT CONTEXT:  line 1 of configuration file "C:/PostgreSQL/data/pg_hba.conf"
2013-05-29 15:07:00 MDT FATAL:  could not load pg_hba.conf
2013-05-29 15:07:00 MDT LOG:  local connections are not supported by this build
2013-05-29 15:07:00 MDT CONTEXT:  line 1 of configuration file "C:/PostgreSQL/data/pg_hba.conf"
2013-05-29 15:07:00 MDT FATAL:  could not load pg_hba.conf
2013-05-29 15:09:03 MDT LOG:  received fast shutdown request
2013-05-29 15:09:03 MDT LOG:  aborting any active transactions
2013-05-29 15:09:03 MDT LOG:  autovacuum launcher shutting down
2013-05-29 15:09:03 MDT LOG:  shutting down
2013-05-29 15:09:03 MDT LOG:  database system is shut down

Il semble y avoir des problèmes avec le fichier pg_hba.conf, qui ressemble à ceci: 

local all all trust
Host all all 127.0.0.1 255.255.255.255 trust
Host all all 0.0.0.0 0.0.0.0 trust

Selon de nombreuses suggestions en ligne, j'ai essayé de modifier la ligne du haut selon différentes alternatives (Host all all/Host all 127.0.0.1/32 trust/Host all 192.168.0.100/24 ​​trust, etc.). Cela me paraissait logique, car le fichier journal indiquait que les connexions locales ne sont pas prises en charge par postgres et indiquait également cette ligne. Cependant, aucune de mes modifications n'a eu d'effet. J'ai essayé de redémarrer mon ordinateur après chaque modification, mais rien ne faisait la différence.

Lorsque j'ai cherché des exemples de ce à quoi ressemble normalement un fichier pg_hba.conf, ces exemples étaient légèrement différents de ceux de mon fichier. J'ai remarqué que dans le fichier programme PostgreSQL, en plus de pg_hba.conf, il y avait aussi un fichier "20130529-150444-old-pg_hba.conf" qui ressemblait beaucoup plus aux exemples que je trouvais en ligne. Ce fichier contient plusieurs lignes de commentaires avant ces dernières lignes:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
Host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
Host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#Host    replication     postgres        127.0.0.1/32            md5
#Host    replication     postgres        ::1/128                 md5

J'espérais que c'était le fichier original pg_hba.conf et que si je remplaçais le nouveau fichier par le contenu de l'ancien, Postgres recommencerait à fonctionner. Pas de chance. J'espérais que davantage de fichiers d'erreur seraient consignés dans pg_log pour voir si l'erreur précédemment signalée avait disparu ou avait été remplacée par autre chose, mais aucun autre fichier n'avait été consigné.

Je dépanne en ligne depuis quelques jours et rien de ce que j'ai trouvé n'a fonctionné. Désolé d'avoir une aussi longue question, mais je voulais être minutieux et inclure toutes les informations pertinentes. J'apprécierais que quiconque puisse faire la lumière sur ce problème ou proposer des suggestions.

9
user2437443

L'entrée locale n'est pas prise en charge sur les ordinateurs Windows. Voir E.20.3.1.3. Authentification .

Rejeter les lignes locales dans pg_hba.conf sur des plates-formes ne prenant pas en charge les connexions Unix-socket (Magnus Hagander)

Auparavant, ces lignes étaient ignorées en silence, ce qui pouvait être surprenant. Cela rend le comportement plus semblable à d’autres cas non pris en charge.

Changez votre configuration à partir de:

local  all    all     trust

à:

Host   all    all   127.0.0.1/32  trust
Host   all    all   ::1/128       trust

Pour plus d'informations, consultez 19.1. Le fichier pg_hba.conf .

6
jim31415

J'ai eu ce problème avec Postgresql version 8.3 après l'avoir installé sur un ordinateur Windows 7. Initialement, il fonctionnait normalement, mais tout à coup, il s'est arrêté (probablement après une mise à jour de Windows). De nombreuses tentatives ont été modifiées. Quelques mois plus tard, j'ai trouvé le problème dans un fichier vide, mais il devrait contenir des données. Vérifiez le chemin: C:\Fichiers de programme (x86)\Postgresql\8.3\data\(où la version 8.3 doit être remplacée par votre numéro de version). Vérifiez si le fichier Postmaster.pid est vide ou non (ouvrez-le à l'aide de Wordpad ou du Bloc-notes). S'il est vide, renommez-le _Postmaster.pid (ou un autre nom). Allez au menu Démarrer et tapez Command Services.msc Dans la boîte de commande. Appuyez sur Entrée Recherchez l’entrée de la base de données Postgresql Cliquez deux fois dessus Cliquez sur le bouton Démarrer Si le service démarre, un nouveau Postmaster.pid sera créé (avec quelques données) [.____. .] Vous pouvez le vérifier dans le chemin indiqué ci-dessus.

Le bon conseil provient de l'analyse de l'observateur d'événements: Ouvrez l'Explorateur Windows, sélectionnez "Ordinateur", cliquez avec le bouton droit de la souris sur "Gérer", sélectionnez "Observateur d'événements", attendez le "Résumé des événements administratifs", puis ouvrez le " Erreur "noeud, localisez l'entrée" PostgreSQL "dans la colonne" Source "et double-cliquez dessus. Il y avait une astuce informant des données erronées dans le fichier Postmaster.pid.

J'espère que cette information pourra vous aider. A votre santé! Ed.

5
Eduardo

Dans ce cas, le mieux est d'analyser les journaux du système d'exploitation. Pour les fenêtres, consultez "Observateur d'événements" -> "Application". Cette erreur peut se produire pour différentes raisons. Dans mon cas, un postgres fonctionnait déjà. J'ai découvert cette information dans les journaux Windows.

2
bluelurker

J'ai eu le même problème. Ce qui a fonctionné pour moi a été:

  1. Ouvrez le fichier postgresql.conf (généralement, il se trouve dans C:\Program Files\PostgreSQL\9.4\data);
  2. Commentez le numéro de ligne 147 (shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll')
2
Oliver Drummond

Le problème est que cette version de Postgres sous Win7 ne peut pas gérer les connexions locales. Je devais travailler avec pg de manière très urgente sur mon ordinateur local, je ne me souciais donc pas trop de la sécurité, alors ce n'est peut-être pas la meilleure solution pour un environnement réel. Mais mon PC local était suffisant. 

J'ai supprimé toutes les autres lignes non commentées de pg_hba.conf et je ne les ai laissées que dans la suivante:

Host    all             all             ::1/0                 trust

Après cela, je pourrais me connecter via une ligne de commande. 

Je ne comprends pas pourquoi le manuel n'en dit pas plus sur ce problème. Je suis à peu près sûr que beaucoup de gens ont un problème avec ça.

2
halmai

Donc, rapidement, je lance PostgreSQL sur Linux. Mais, il y a des années, je l'ai exécuté sous Windows. Et je semble me souvenir de ce problème. Je pense que l'indice est dans cette ligne:

2013-05-29 15:07:00 MDT LOG:  local connections are not supported by this build

les connexions locales est une chose Unix. Vous utilisez Windows. Donc, "pas supporté par cette construction". Essayez de changer local en localhost et redémarrez. Voici un entrez la description du lien ici vers un problème similaire posté sur la liste de diffusion Postgres:

0
David S

J'avais commis une erreur dans postgresql.conf. j'avais fait

max_prepared_transactions = 16*max_connections  # zero disables the feature

où auparavant dans ce fichier il y a,

max_connections=100

Cela ne peut pas être fait, et les travaux suivants:

max_prepared_transactions = 1600    # zero disables the feature
0
ericj

"Le service sur l'ordinateur local a démarré puis s'est arrêté. Certains services s'arrêtent automatiquement s'ils ne sont pas utilisés par d'autres services ou programmes."

Maintenant, je vais expliquer comment résoudre le service sur un ordinateur local démarré puis arrêté, certains services s’arrêtant automatiquement s’ils ne sont pas utilisés par d’autres services ou programmes.

Pour résoudre ce problème, nous avons deux moyens 

Première façon

Démarrer -> Exécuter -> Tapez Services.msc et cliquez sur le bouton Entrer. Vous obtiendrez tous les services de votre ordinateur. Sélectionnez ensuite votre service, cliquez dessus avec le bouton droit de la souris et sélectionnez Propriétés.

Après cela, ouvrez l’onglet Sélectionner une connexion dans cette zone, sélectionnez Compte système local et cliquez sur OK. Votre problème sera résolu.

0
Lashe