J'ai installé PostgreSQL sur mon Mac OS Lion et je travaille sur une application de rails. J'utilise RVM pour que tout soit séparé de mes autres applications Rails.
Pour une raison quelconque, lorsque j'essaye de migrer la base de données pour la première fois, rake ne trouve pas l'utilisateur postgres. J'obtiens l'erreur
FATAL: role "postgres" does not exist
J'ai pgAdmin donc je peux clairement voir qu'il y a un utilisateur postgres dans la base de données - le compte administrateur en fait - donc je ne sais pas quoi faire d'autre.
J'ai lu quelque part sur des personnes ayant des problèmes avec PostgreSQL à cause du chemin dans lequel il a été installé, mais je ne pense pas que j'aurais été aussi loin s'il ne pouvait pas trouver la base de données.
postgres
n'a pas été créé, ce qui peut conduire au même message d'erreur, voir cette question connexe: stackoverflow.com/questions/11919391/…Réponses:
Ce message apparaît lorsque l'utilisateur de la base de données n'existe pas. Comparez le manuel ici .
Plusieurs bases de données locales ne peuvent pas être l'explication. Les rôles sont valides à l'échelle du cluster. Le manuel encore :
Vous devez vous retrouver dans un autre cluster de bases de données . Ce serait un autre serveur fonctionnant sur la même machine, écoutant un port différent. Ou, plus probablement, sur une machine différente.
Se pourrait-il que le message provienne, en fait, du serveur distant?
la source
docker rmi $(docker images -q) --force
. mais le problème était survolumes
je supposeEn fait, pour une raison inconnue, j'ai trouvé que le problème était en fait parce que le rôle postgresql n'avait pas été créé.
Essayez de courir:
Notez que les rôles sont la manière dont PostgreSQL gère les autorisations de base de données . S'il n'y a pas de rôle pour l'utilisateur postgres, il ne peut accéder à rien. La commande createuser est un wrapper fin autour des commandes CREATE USER, CREATE ROLE, etc.
la source
sudo su - postgres
avant que cette commande ne fonctionne pour moi. Merci!-r
option n'est pas nécessaire avec l'-s
option. Le superutilisateur inclut l'attribut "Créer un rôle".Récemment, j'ai eu ce problème immédiatement après l'installation de postgres. S'il survient immédiatement après l'installation, il se peut que l'utilisateur par défaut, postgres. Dans ce cas, vous pouvez créer des postgres utilisateur par défaut en utilisant la commande ci-dessous.
createuser -s -U $ USER
Il vous demandera d'entrer le nom et le mot de passe du rôle de base de données requis.Une fois le processus terminé, vous pouvez vous connecter à la console postgres en utilisant la commande ci-dessous
Ex: psql -U postgres
Ici, vous devez entrer le mot de passe si vous en avez donné, lors de la création de l'utilisateur.
J'espère que ça aide :)
la source
J'étais sous OSX 10.8 et tout ce que j'essayais me donnait le
FATAL: role "USER" does not exist
. Comme beaucoup de gens l'ont dit ici, courezcreateuser -s USER
, mais cela m'a donné la même erreur. Cela a finalement fonctionné pour moi:Le
createuser -s --username=postgres
crée un superutilisateur (indicateur -s) en se connectant en tant que postgres (--username = indicateur postgres).Je vois que votre question a été répondue, mais je veux ajouter cette réponse pour les personnes utilisant OSX essayant d'installer PostgreSQL 9.2.4.
la source
sudo su postgres
.J'ai rencontré ce problème dès la première installation de la chose POSTGRES.app de Heroku. Après un essai et une erreur du matin, je pense que cette ligne de code a résolu le problème. Comme décrit précédemment, c'est parce que postgresql n'a pas de rôle par défaut la première fois qu'il est configuré. Et nous devons définir cela.
Vous devez vous connecter à votre console psql respective pour utiliser cette commande psql.
Notez également que si vous avez déjà créé le rôle 'postgre' mais que vous obtenez toujours des erreurs d'autorisation, vous devez modifier avec la commande:
J'espère que ça aide!
la source
Dans la documentation Heroku; Pour commencer avec les rails 4, ils disent:
Ensuite, vous supprimez simplement cette ligne dans "development:", si vous ne le faites pas, pg indique à la base de données qui fonctionne sous le rôle "myapp"
Pensez également à créer la base de données pour le développement:
Remplacez "myapp" par le nom de votre application
la source
Pourriez-vous avoir plusieurs bases de données locales? Vérifiez votre
database.yml
et assurez-vous que vous atteignez la base de données pg que vous voulez. Utilisezrails console
pour confirmer.la source
La procédure d'installation crée un compte utilisateur appelé
postgres
qui est associé au rôle Postgres par défaut. Pour utiliser Postgres, vous pouvez vous connecter à ce compte. Mais si elle n'est pas explicitement spécifiée, l'application rails recherche un rôle différent, plus particulièrement le rôle ayant votre nom d'utilisateur unix qui pourrait ne pas être créé dans les rôles postgres.Pour surmonter cela, vous pouvez créer un nouveau rôle, d'abord en basculant vers le rôle par défaut postgres qui a été créé lors de l'installation
sudo -i -u postgres
Une fois que vous êtes connecté au compte postgres, vous pouvez créer un nouvel utilisateur par la commande:
createuser --interactive
Cela vous proposera quelques choix et, en fonction de vos réponses, exécutera les commandes Postgres correctes pour créer un utilisateur.
Passez un nom de rôle et certaines autorisations et le rôle est créé, vous pouvez ensuite migrer votre base de données
la source
Ma réponse était beaucoup plus simple. Je suis juste allé dans le dossier db et j'ai supprimé la colonne id, que j'avais essayé de créer avec force, mais qui est en fait créée automatiquement. J'ai également supprimé le nom d'utilisateur dans le fichier database.yml (sous le dossier config).
la source
Dans l'invite de commande de l'utilisateur local Ubuntu, mais pas dans l'utilisateur root, tapez
sudo -u postgres createuser nom d'utilisateur
Le nom d'utilisateur ci-dessus doit correspondre au nom indiqué dans le message "FATAL: le rôle 'nom d'utilisateur' n'existe pas."
Entrez le mot de passe pour le nom d'utilisateur.
Entrez ensuite à nouveau la commande que le rôle généré n'existe pas.
la source
Je me suis retrouvé ici après avoir tenté de suivre le tutoriel de Ryan Bate sur le déploiement sur AWS EC2 avec du caoutchouc. Voici ce qui m'est arrivé: nous avons créé une nouvelle application en utilisant "
rails new blog -d postgresql
Évidemment, cela crée une nouvelle application avec pg comme base de données, mais la base de données n'a pas encore été créée. Avec sqlite, vous exécutez simplement rake db: migrate, mais avec pg, vous devez d'abord créer la base de données pg. Ryan n'a pas fait cette étape. La commande est
rake db:create:all
, alors nous pouvons exécuterrake db:migrate
La deuxième partie consiste à modifier le fichier database.yml. La valeur par défaut du nom d'utilisateur lorsque le fichier est généré est «appname». Cependant, il y a de fortes chances que votre rôle d'administrateur postgresql soit quelque chose de différent (du moins c'était pour moi). Je l'ai changé en mon nom (voir les conseils ci-dessus sur la création d'un nom de rôle) et j'étais prêt à partir.
J'espère que cela t'aides.
la source
Après un tas d'installation et de désinstallation de Postgres, voici ce qui semble maintenant fonctionner de manière cohérente pour moi avec Os X Mavericks, Rails 4 et Ruby 2.
Dans le fichier database.yml, je change les noms d'utilisateur par défaut en nom d'utilisateur de mon ordinateur qui pour moi est simplement "admin".
Dans la ligne de commande, je lance rake db: create: all
Ensuite, je lance rake db: migrate
Lorsque je lance le serveur de rails et que je vérifie l'hôte local, il dit "Bienvenue à bord".
la source
Vous pourrez peut-être contourner ce problème en l'exécutant
initdb -U postgres -D /path/to/data
ou en l'exécutant en tant que postgres de l'utilisateur, car il est défini par défaut sur l'utilisateur actuel. GL!la source