J'utilise l'application PostgreSql pour mac ( http://postgresapp.com/ ). Je l'ai utilisé dans le passé 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 exécuté:
psql -h localhost
Il renvoie:
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 se produit 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 j'obtiens 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 lorsqu'aucune n'est spécifiée. L'utilisateur par défaut est $ USER, sans mot de passe.
Il semblerait donc que l'application ne crée pas $ USER mais j'ai installé-> désinstallé-réinstallé plusieurs fois maintenant, donc cela doit être quelque chose avec ma machine.
J'ai trouvé la réponse, mais je ne sais pas exactement comment cela fonctionne, car l'utilisateur qui a répondu sur ce fil -> Faire fonctionner Postgresql sur 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.
la source
psql -d postgres -U postgres -h localhost
montre-t-on? Sans drapeaux, il s'agit par défaut de l'utilisateur CLI, et j'aurais dit qu'il s'agissait par défaut de la base de données d'administration "postgres" mais je n'ai pas de mac pour tester.createdb <user>
fonctionné pour moi.psql -U user -d postgres
, cela garantit que l'utilisateur est connecté à la base de données postgres, qui est déjà présente. Nous devons donc transmettre la base de données également lors de la connexion.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
fonctionne pour vous est que template1 est une base de données créée par postgres lui-même, et est présente sur toutes les installations. Vous êtes apparemment en mesure de vous connecter à template1, vous devez donc avoir des droits qui vous sont attribués par la base de données. Essayez ceci à l'invite du shell:
puis voyez si vous pouvez vous reconnecter avec
Cela créera simplement une base de données pour votre utilisateur de connexion, ce qui, je pense, est ce que vous recherchez. Si createdb échoue, alors vous n'avez pas suffisamment de droits pour créer votre propre base de données, et vous devrez trouver comment réparer le package homebrew.
la source
$ createdb -h localhost
pour résoudre l'erreurcould not connect to database postgres: could not connect to server
. Après cela, je peux me connecter à la console postgresql viapsql -h localhost
.-d template1
de votre première commande? J'ai vu "template1" dans des tutoriels partout sur Internet mais cela ne sert qu'à me confondre. Une approche plus logique serait, à mon avis 1) Créer l'utilisateur PostgreSQL, par exemple "usera" 2) Créer une base de données avec le même nom que l'utilisateur "usera" (Je pense que c'est fou mais il semble que PostgreSQL l'exige) 3) Connectez-vous à PostgreSQL en tant que super utilisateur "postgres" et attribuez les privilèges de la base de données "usera" à l'utilisateur "usera" (oh mon dieu, est-ce vraiment la vraie vie?)Depuis le terminal, exécutez simplement la commande dans votre fenêtre d'invite de commande. (Pas à l'intérieur de psql) .
Et puis essayez à nouveau d'exécuter postgres.
la source
createdb
Par défaut, postgres essaie 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 l'utilisateur et la base de données:
la source
psql -U Username -f create_db.sql
cela renverra une erreur:database Username doesn't exists
psql -U Username postgres
quand vous n'avez pas encore de bases de donnéessudo -i -u postgres
createuser --interactive
createdb <username_from_step_3>
psql
à l'invite de commande.psql (x.x.x) Type "help" for help.
la source
Connectez-vous en utilisant la base de données template1 par défaut:
Créez une base de données avec votre ID utilisateur:
Quittez puis reconnectez-vous
la source
J'ai rencontré la même erreur lorsque j'ai essayé d'ouvrir postgresql sur mac
J'ai trouvé cette commande simple pour le résoudre:
méthode1
et tapez
Méthode 2:
la source
Eu le même problème, un simple l'a
psql -d postgres
fait (Tapez la commande dans le terminal)la source
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 était de 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 retirer
export PGUSER=notme
de~/.bash_profile
.la source
Après l'installation de postgres, dans ma version de cas est 12.2, j'ai exécuté la commande ci-dessous
createdb
.la source
Étant donné que cette question est la première dans les résultats de recherche, je mettrai ici une solution différente pour un problème différent, afin de ne pas avoir de titre en double.
Le même message d'erreur peut apparaître lors de l'exécution d'un fichier de requête
psql
sans spécifier de base de données. Puisqu'il n'y a aucuneuse
instruction dans postgresql, nous devons spécifier la base de données sur la ligne de commande, par exemple:la source
Comme l'indique la documentation de createdb :
Donc, si certaines distributions OS / postgresql le font différemment, ce n'est certainement pas le standard / standard (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
on s'attend à ce qu'il soit utilisé lors de l'utilisation d'un utilisateur autre que "postgres".De toute évidence, la réponse acceptée, exécutée
createdb
pour créer une base de données nommée comme l'utilisateur, fonctionne également, mais crée une base de données superflue.la source
eu le problème avec l'utilisation du pilote JDBC, il suffit donc d'ajouter la base de données (peut-être de manière redondante selon 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
la source
Connectez-vous à PostgreSQL via le superutilisateur existant.
Créez une base de données avec le nom de l'utilisateur via lequel vous vous connectez à postgres.
Essayez maintenant de vous connecter via le nom d'utilisateur
la source
Essayez d'utiliser-
psql -d postgres
J'étais également confronté au même problème lorsque j'ai couru
psql
la source
Tout d'abord, il est utile de créer une base de données nommée de la même manière que votre utilisation actuelle, pour éviter l'erreur lorsque vous souhaitez simplement utiliser la base de données par défaut et créer de nouvelles tables sans déclarer explicitement le nom d'une base de données.
Remplacez "skynotify" par votre nom d'utilisateur:
-d déclare explicitement la base de données à utiliser par défaut pour les instructions SQL qui n'incluent pas explicitement un nom de base de données pendant cette session interactive.
BASES POUR OBTENIR UNE IMAGE CLAIRE DE CE QUE VOTRE SERVEUR PostgresQL contient.
Vous devez vous connecter à une base de données existante pour utiliser psql de manière interactive. Heureusement, vous pouvez demander à psql une liste de bases de données:
.
Cela ne démarre PAS la console interactive, il génère simplement un tableau basé sur du texte vers le terminal.
Comme le dit une autre réponse, postgres est toujours créé, vous devez donc l'utiliser comme base de données à sécurité intégrée lorsque vous souhaitez simplement que la console démarre pour fonctionner sur d'autres bases de données. Si ce n'est pas le cas, répertoriez les bases de données, puis utilisez l'une d'entre elles.
De la même manière, sélectionnez des tables dans une base de données:
Ma base de données "postgres" n'a pas de tables, mais n'importe quelle base de données qui en sortira une table texte sur le terminal (sortie standard).
Et pour être complet, nous pouvons également sélectionner toutes les lignes d'une table:
.
Même si aucune ligne n'est retournée, vous obtiendrez les noms des champs.
Si vos tables ont plus d'une douzaine de lignes, ou si vous n'êtes pas sûr, il sera plus utile de commencer par un nombre de lignes pour comprendre la quantité de données dans votre base de données:
.
Et ne pensez pas que cette "1 ligne" vous déroute, elle représente simplement le nombre de lignes renvoyées par la requête, mais la 1 ligne contient le nombre souhaité, qui est 0 dans cet exemple.
REMARQUE: un db créé sans propriétaire défini sera la propriété de l'utilisateur actuel.
la source
J'ai essayé certaines de ces solutions, mais elles ne fonctionnaient pas tout à fait (même si elles étaient bien sur la bonne voie!)
Au final, mon erreur a été:
lorsque j'ai exécuté la commande suivante:
psql
Alors j'ai couru ces deux commandes:
REMARQUE: cela va enlever le db, mais je ne l' ai pas besoin et pour une raison quelconque , je ne pouvais plus PQSL d'accès, donc je l' ai enlevé et recréée. Puis
psql
travaillé à nouveau.la source
Je ne sais pas si elle est déjà ajoutée dans les réponses, la réponse d'Anatolii Stepaniuk a été très utile, ce qui est le suivant.
la source
J'ai eu ce problème lors de l'installation de postgresql via homebrew.
J'ai dû créer le super utilisateur par défaut "postgres" avec:
la source
J'ai toujours eu le problème ci-dessus après l'installation de postgresql en utilisant homebrew - je l'ai résolu en mettant / usr / local / bin sur mon chemin avant / usr / bin
la source
Dans son explication la plus simple; c'est un problème de noob. Il suffit de taper
entraînera cette réponse.
réussira sans erreur si l'utilisateur dispose des autorisations d'accès à la base de données.
On peut entrer dans les détails des variables d'environnement exportées mais ce n'est pas nécessaire .. c'est trop basique pour échouer pour toute autre raison.
la source
pgres