[Macos] `pg_tblspc` manquant après l'installation de la dernière version d'OS X (Yosemite ou El Capitan)


Answers

La réponse de est sur place, je voulais juste ajouter que comme j'ai fait différentes choses avec la base de données (par exemple rake db:test ), il est allé chercher des répertoires différents qui n'ont pas été mentionnés ci-dessus t présent, dans mon cas, pg_logical/mappings , vous pouvez donc vouloir installer un terminal en cours d'exécution:

tail -f /usr/local/var/postgres/server.log

et regardez-le pour les dossiers manquants pendant que vous allez à travers vos activités de base de données typiques.

Question

J'utilise postgres de homebrew dans mon OS X, mais quand je redémarre mon système, parfois le postgres ne démarre pas après le redémarrage, et donc j'ai essayé manuellement de le démarrer avec postgres -D /usr/local/var/postgres , mais alors l'erreur s'est produite avec le message suivant: FATAL: could not open directory "pg_tblspc": No such file or directory .

La dernière fois que cela s'est produit, je n'ai pas pu l'obtenir à l'état initial, j'ai donc décidé de désinstaller tout le système postgres puis de le réinstaller et de créer des utilisateurs, des tables, des jeux de données, etc ... C'était tellement dégoûtant Cela arrive souvent sur mon système, disons une fois dans quelques mois.

Alors pourquoi perd-il le fichier pg_tblspc fréquemment? Et y a-t-il quelque chose que je puisse faire pour éviter la perte du fichier?

Je n'ai pas mis à jour mon homebrew et postgres à la dernière version (c'est-à-dire que j'ai utilisé la même version). En outre, toutes les choses que j'ai faites sur la base de données postgres sont supprimer la table et remplir les nouvelles données tous les jours. Je n'ai pas changé l'utilisateur, le mot de passe, etc ...

EDIT (mbannert): J'ai ressenti le besoin d'ajouter ceci, puisque le thread est le meilleur hit sur google pour ce problème et pour beaucoup le symptôme est différent. Homebrewers devrait rencontrer ce message d'erreur:

No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Donc, si vous venez de l'expérimenter après la mise à niveau de Yosemite, vous êtes maintenant couvert pour le moment.




Les répertoires manquants doivent être présents dans votre répertoire de données PostgreSQL. Le répertoire de données par défaut est /usr/local/var/postgres/ . Si vous avez configuré un répertoire de données différent, vous devez recréer les répertoires manquants. Si vous avez modifié le fichier .plist recommandé par homebrew qui démarre PostgreSQL, vous pouvez y trouver le répertoire de données:

cat ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

(c'est l'option -D vous avez démarrée avec :)

  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/bin/postgres</string>
    <string>-D</string>
    <string>/usr/local/pgsql/data</string>

Dans l'exemple ci-dessus, vous devez créer les répertoires manquants dans /usr/local/pgsql/data , comme suit:

cd /usr/local/pgsql/data
mkdir {pg_tblspc,pg_twophase,pg_stat,pg_stat_tmp,pg_replslot,pg_snapshots,pg_logical}
mkdir pg_logical/{snapshots,mappings}





Links