789 votes

psql : FATAL : base de données "<user>" n’existe pas</user>

Je suis en utilisant PostgreSql app pour mac (http://postgresapp.com/). Je l'ai utilisé dans le passé sur d'autres machines, mais c'est de me donner quelques difficultés lors de l'installation sur mon macbook. J'ai installé l'application et j'ai couru:

psql -h localhost

Il retourne:

psql: FATAL:  database "<user>" does not exist

Il semble que je ne peux même pas lancer la console pour créer la base de données qu'il est tentant de trouver. La même chose arrive quand je viens de lancer:

psql 

ou si je me lance psql de l'application menu déroulant:

Machine à stats:

  • OSX 10.8.4

  • psql (PostgreSQL) 9.2.4

Toute aide est appréciée.

J'ai aussi tenté d'installer PostgreSql via homebrew et j'obtiens le même problème. J'ai aussi lu la documentation des applications à la page que les états:

Lorsque Postgres.application démarre pour la première fois, il crée l' $UTILISATEUR de base de données, qui est la valeur par défaut de la base de données pour psql lorsqu'aucun n'est spécifié. L' l'utilisateur par défaut est $UTILISATEUR, sans mot de passe.

Il semblerait donc que l'application n'est pas la création de $UTILISATEUR, mais j'ai installé->désinstallé-réinstallé plusieurs fois maintenant, donc ça doit être quelque chose avec ma machine.

J'ai trouvé la réponse, mais je ne sais pas exactement comment cela fonctionne tant que l'utilisateur qui a répondu sur ce fil de discussion -> Obtenir Postgresql Fonctionnant sous Mac: Base de données "postgres" n'existe pas n'a pas suivi. J'ai utilisé la commande suivante pour obtenir psql pour l'ouvrir:

psql -d template1

Je vais quitter cette un sans réponse jusqu'à ce que quelqu'un peut fournir une explication pour pourquoi cela fonctionne.

1267voto

Kirk Roybal Points 2940

Il semble que votre gestionnaire de paquet n'a pas pu créer la base de données nommée $utilisateur pour vous. La raison que

psql -d template1

fonctionne pour vous est que template1 est une base de données créée par postgres lui-même, et est présent sur toutes les installations. Vous êtes apparemment en mesure de se connecter à template1, de sorte que vous devez avoir certains droits qui vous sont attribués par la base de données. Essayez ceci à l'invite du shell:

createdb

et puis voir si vous pouvez vous connecter à nouveau avec

psql -h localhost

Ce sera tout simplement créer une base de données pour votre login de l'utilisateur, qui, je pense, est ce que vous cherchez. Si createdb échoue, alors vous n'avez pas les droits suffisants pour faire votre propre base de données, et vous aurez à comprendre comment résoudre le homebrew paquet.

175voto

Aneer Anwar Points 93

Par défaut, postgres essaie de se connecter à une base de données avec le même nom que votre nom d’utilisateur. Pour empêcher ce comportement par défaut, il suffit de spécifier l’utilisateur et la base de données :

66voto

user286539 Points 11
<ol> <li>Connectez-vous en tant qu’utilisateur par défaut :<code></code></li> <li>Créer un nouvel utilisateur :<code></code></li> <li>Lorsque vous êtes invité pour le nom de rôle, entrez le nom d’utilisateur linux et sélectionnez Oui à la question de superutilisateur.</li> <li>Toujours connecté tant qu’utilisateur postgres, créez une base de données :<code></code></li> <li>Confirmer l’erreur (s) est allés en entrant : <code></code> à l’invite de commande.</li> <li>Sortie doit afficher<code></code></li> </ol>

6voto

sdhca Points 11

Cette erreur peut également se produire si la variable d'environnement PGDATABASE est le nom d'une base de données qui n'existe pas.

Sur OSX, j'ai vu l'erreur suivante en essayant de lancer psql de la Postgress.menu app:

psql: FATAL: database "otherdb" does not exist

La solution pour l'erreur a été de supprimer export PGDATABASE=otherdb de ~/.bash_profile:

De plus, si PGUSER est réglé sur autre chose que votre nom d'utilisateur, l'erreur suivante se produit:

psql: FATAL: role "note" does not exist

La solution est de supprimer export PGUSER=notme de ~/.bash_profile.

4voto

Babken Vardanyan Points 544

Étant donné que cette question est le premier dans les résultats de la recherche, je vais mettre une autre solution pour un problème différent ici en tout cas, pour ne pas avoir un titre en double.

Le même message d’erreur peut arriver lorsque vous exécutez un fichier de requête dans sans spécifier une base de données. Puisqu’il n’y a aucun énoncé dans postgresql, il faut préciser la base de données sur la ligne de commande, par exemple :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X