Question psql: FATAL: la base de données "" n'existe pas


J'utilise l'application PostgreSQL pour mac (http://postgresapp.com/). Je l'ai déjà utilisé sur d'autres machines mais cela me pose des problèmes 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 puisse même pas exécuter la console pour créer la base de données qu’elle tente de trouver. La même chose arrive quand je viens de courir:

psql 

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

Statistiques de la machine:

  • OSX 10.8.4

  • psql (PostgreSQL) 9.2.4

Toute aide est appréciée.

J'ai également essayé d'installer PostgreSQL via homebrew et je reçois le même problème. J'ai également lu la page de documentation des applications qui indique:

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

Donc, il semblerait que l'application ne crée pas de $ USER mais j'ai installé-> désinstallé-réinstallé plusieurs fois maintenant, ça doit être quelque chose avec ma machine.

J'ai trouvé la réponse mais je ne sais pas exactement comment cela fonctionne comme l'utilisateur qui a répondu à ce sujet -> Faire fonctionner Postgresql sous Mac: la base de données "postgres" n'existe pas n'a pas suivi. J'ai utilisé la commande suivante pour ouvrir psql:

psql -d template1

Je vais laisser celui-ci sans réponse jusqu'à ce que quelqu'un puisse expliquer pourquoi cela fonctionne.


481
2017-07-13 19:18


origine


Réponses:


Il semble que votre gestionnaire de packages n'ait pas réussi à créer la base de données nommée $ user pour vous. La raison pour laquelle

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 vous connecter à template1, vous devez donc avoir des droits qui vous sont assigné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

Cela créera simplement une base de données pour votre utilisateur de connexion, ce que je pense être ce que vous recherchez. Si createdb échoue, vous n'avez pas assez de droits pour créer votre propre base de données et vous devrez déterminer comment réparer le paquet homebrew.


862
2017-07-29 23:40



Par défaut, postgres tente de se connecter à une base de données portant le même nom que votre utilisateur. Pour éviter ce comportement par défaut, spécifiez simplement user et database:

psql -U Username DatabaseName 

90
2018-02-17 11:10



Depuis le terminal, exécutez simplement la commande dans la fenêtre d'invite de commande. (Pas à l'intérieur de psql).

createdb <user>

Et ensuite, essayez de relancer postgres.


85
2018-04-10 22:51



  1. Connectez-vous en tant qu'utilisateur par défaut sudo -i -u postgres
  2. Créer un nouvel utilisateur: createuser --interactive
  3. Lorsque vous êtes invité à indiquer le nom du rôle, entrez le nom d'utilisateur linux et sélectionnez Oui pour la question du superutilisateur.
  4. Toujours connecté en tant qu'utilisateur postgres, créez une base de données: createdb <username_from_step_3>
  5. Confirmez les erreurs en entrant: psql à l'invite de commande.
  6. La sortie devrait montrer psql (x.x.x) Type "help" for help.

41
2017-11-03 19:52



Connectez-vous en utilisant la base de données template1 par défaut:

#psql -d template1
#template1=# \l

  List of databases
   Name    |  Owner  | Encoding |   Collate   |    Ctype    |  Access privileges  
-----------+---------+----------+-------------+-------------+---------------------
 postgres  | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
 template1 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
(3 rows)

Créez une base de données avec votre userId:

template1=# CREATE DATABASE gogasca WITH OWNER gogasca ENCODING 'UTF8';
CREATE DATABASE

Quittez, puis reconnectez-vous

template1=# \q
gonzo:~ gogasca$ psql -h localhost
psql (9.4.0)
Type "help" for help.

gogasca=# \l
                                List of databases
   Name    |  Owner  | Encoding |   Collate   |    Ctype    |  Access privileges  
-----------+---------+----------+-------------+-------------+---------------------
 gogasca   | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
 template1 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
(4 rows)

32
2018-02-24 07:26



J'ai fait face à la même erreur lorsque j'essaye d'ouvrir postgresql sur mac

psql: FATAL:  database "user" does not exist

J'ai trouvé cette commande simple pour le résoudre:

méthode1

$ createdb --owner=postgres --encoding=utf8 user

et tapez

 psql

Méthode 2:

psql -d postgres

10
2018-04-08 07:49



Cette erreur peut également se produire si la variable d'environnement PGDATABASE est définie sur 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 à partir du menu Postgress.app:

psql: FATAL: database "otherdb" does not exist

La solution à l'erreur consistait à supprimer export PGDATABASE=otherdb de ~/.bash_profile:

En outre, si PGUSER est défini 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.


5
2017-08-26 03:33



Puisque cette question est la première dans les résultats de recherche, je vais mettre une solution différente pour un problème différent de toute façon, afin de ne pas avoir de doublon.

Le même message d'erreur peut apparaître lors de l'exécution d'un fichier de requête dans psql sans spécifier une base de données. Comme il n'y a pas use instruction dans postgresql, nous devons spécifier la base de données sur la ligne de commande, par exemple:

psql -d db_name -f query_file.sql

3
2017-08-17 09:58



Comme le documentation createdb États:

La première base de données est toujours créée par la commande initdb lors de l'initialisation de la zone de stockage de données ... Cette base de données s'appelle postgres.

Donc, si certaines distributions OS / postgresql font cela différemment, ce n'est certainement pas le standard par défaut (juste vérifié que initdb sur openSUSE 13.1 crée la base de données "postgres", mais pas "<user>". Longue histoire courte, psql -d postgres devrait être utilisé lors de l'utilisation d'un utilisateur autre que "postgres".

De toute évidence, la réponse acceptée, en cours d'exécution createdb créer une base de données nommée comme l'utilisateur, fonctionne également, mais crée une base de données superflue.


3
2018-02-24 13:24



Avait le même problème, un simple psql -d postgres l'a fait (Tapez la commande dans le terminal)


3
2017-12-05 08:42



avait le problème avec l'utilisation du pilote JDBC, donc il suffit d'ajouter la base de données (peut-être redondante en fonction de l'outil que vous pouvez utiliser) après le nom d'hôte dans l'URL, par exemple. jdbc:postgres://<host(:port)>/<db-name>

plus de détails sont documentés ici: http://www.postgresql.org/docs/7.4/static/jdbc-use.html#JDBC-CONNECT


1
2017-08-26 13:38