Ich habe PostgreSQL auf meinem Mac OS Lion installiert und arbeite an einer Rails-App. Ich verwende RVM, um alles von meinen anderen Rails-Apps zu trennen.
Aus irgendeinem Grund kann Rake den Postgres-Benutzer nicht finden, wenn ich versuche, die Datenbank zum ersten Mal zu migrieren. Ich bekomme den Fehler
FATAL: role "postgres" does not exist
Ich habe pgAdmin, damit ich deutlich sehen kann, dass sich ein Postgres-Benutzer in der Datenbank befindet - das Administratorkonto in der Tat -, daher bin ich mir nicht sicher, was ich sonst tun soll.
Ich habe irgendwo über Leute gelesen, die Probleme mit PostgreSQL haben, aufgrund dessen der Pfad installiert wurde, aber dann glaube ich nicht, dass ich so weit gekommen wäre, wenn es die Datenbank nicht gefunden hätte.
postgres
nicht erstellt wurde, was zu derselben Fehlermeldung führen kann, siehe diese verwandte Frage: stackoverflow.com/questions/11919391/…Antworten:
Diese Meldung wird angezeigt, wenn der Datenbankbenutzer nicht vorhanden ist. Vergleichen Sie das Handbuch hier .
Mehrere lokale Datenbanken können nicht die Erklärung sein. Rollen sind clusterweit gültig. Das Handbuch noch einmal :
Sie müssen in einem anderen Datenbankcluster landen . Das wäre ein anderer Server, der auf demselben Computer läuft und einen anderen Port abhört. Oder eher auf einer anderen Maschine.
Könnte es sein, dass die Nachricht tatsächlich vom Remote-Server stammt?
quelle
docker rmi $(docker images -q) --force
. aber Problem warvolumes
ich denkeAus einem unbekannten Grund stellte ich fest, dass das Problem tatsächlich darin bestand, dass die postgresql-Rolle nicht erstellt wurde.
Versuchen Sie zu laufen:
Beachten Sie, dass PostgreSQL in Rollen Datenbankberechtigungen verwaltet . Wenn für den Postgres-Benutzer keine Rolle vorhanden ist, kann er auf nichts zugreifen. Der Befehl createuser ist ein dünner Wrapper um die Befehle CREATE USER, CREATE ROLE usw.
quelle
sudo su - postgres
bevor dieser Befehl für mich funktionierte. Vielen Dank!-r
Option ist bei der-s
Option nicht erforderlich . Superuser enthält das Attribut "Rolle erstellen".Vor kurzem habe ich dieses Problem sofort nach der Installation von Postgres bekommen. Wenn es unmittelbar nach der Installation kommt, fehlt möglicherweise der Standardbenutzer postgres. In diesem Fall können Sie mit dem folgenden Befehl Standard-Benutzer-Postgres erstellen.
createuser -s -U $ USER
Sie werden aufgefordert, den erforderlichen Namen und das Kennwort für die Datenbankrolle einzugeben. Nach Abschluss des Vorgangs können Sie sich mit dem folgenden Befehl bei der postgres-Konsole anmelden
Beispiel: psql -U postgres
Hier müssen Sie beim Erstellen des Benutzers das Kennwort eingeben, falls Sie eines angegeben haben.
Ich hoffe es hilft :)
quelle
Ich war unter OSX 10.8 und alles, was ich versuchte, würde mir das geben
FATAL: role "USER" does not exist
. Wie viele Leute hier sagten, renncreateuser -s USER
, aber das gab mir den gleichen Fehler. Das hat bei mir endlich geklappt:Das
createuser -s --username=postgres
erstellt einen Superuser (-s Flag) durch Verbinden als Postgres (--username = Postgres Flag).Ich sehe, dass Ihre Frage beantwortet wurde, aber ich möchte diese Antwort für Benutzer von OSX hinzufügen, die versuchen, PostgreSQL 9.2.4 zu installieren.
quelle
sudo su postgres
.Ich habe dieses Problem gleich bei der ersten Installation der POSTGRES.app-Sache von Heroku festgestellt. Nach einem morgendlichen Versuch und Irrtum denke ich, dass diese eine Codezeile das Problem gelöst hat. Wie bereits beschrieben, liegt dies daran, dass postgresql beim ersten Einrichten keine Standardrolle hat. Und das müssen wir einstellen.
Sie müssen sich bei Ihrer jeweiligen psql-Konsole anmelden, um diesen psql-Befehl verwenden zu können.
Beachten Sie auch, dass Sie Folgendes ändern müssen, wenn Sie die Rolle 'postgre' bereits erstellt haben, aber dennoch Berechtigungsfehler erhalten:
Ich hoffe es hilft!
quelle
In der Heroku-Dokumentation; Erste Schritte mit Schienen 4, sagen sie:
Dann löschen Sie einfach diese Zeile in "Entwicklung:", wenn Sie nicht pg sagt zu der Datenbank, die unter der Rolle "myapp" arbeitet.
Denken Sie auch daran, die Datenbank für die Entwicklung zu erstellen:
Ersetzen Sie "myapp" durch Ihren App-Namen
quelle
Könnten Sie mehrere lokale Datenbanken haben? Überprüfen Sie Ihre
database.yml
und stellen Sie sicher, dass Sie die gewünschte pg db treffen. Verwenden Sierails console
zur Bestätigung.quelle
Bei der Installation wird ein Benutzerkonto
postgres
mit dem Namen erstellt , das der Standardrolle von Postgres zugeordnet ist. Um Postgres verwenden zu können, können Sie sich bei diesem Konto anmelden. Wenn dies nicht explizit angegeben wird, sucht die Rails-App nach einer anderen Rolle, insbesondere nach der Rolle mit Ihrem Unix-Benutzernamen, die möglicherweise nicht in den Postgres-Rollen erstellt wurde.Um dies zu überwinden, können Sie eine neue Rolle erstellen, indem Sie zunächst auf die Standardrolle postgres umschalten, die während der Installation erstellt wurde
sudo -i -u postgres
Nachdem Sie beim postgres-Konto angemeldet sind, können Sie mit dem folgenden Befehl einen neuen Benutzer erstellen:
createuser --interactive
Dies fordert Sie zur Auswahl auf und führt basierend auf Ihren Antworten die richtigen Postgres-Befehle aus, um einen Benutzer zu erstellen.
Wenn Sie einen Rollennamen und einige Berechtigungen übergeben und die Rolle erstellt wird, können Sie Ihre Datenbank migrieren
quelle
Meine Antwort war viel einfacher. Ging einfach in den Ordner db und löschte die ID-Spalte, die ich versucht hatte, zwangsweise zu erstellen, die aber tatsächlich automatisch erstellt wird. Ich habe auch den USERNAME in der Datei database.yml (unter dem Konfigurationsordner) gelöscht.
quelle
Geben Sie in die Eingabeaufforderung des lokalen Benutzers von Ubuntu, jedoch nicht des Root-Benutzers, ein
sudo -u postgres createuser Benutzername
Der obige Benutzername sollte mit dem Namen übereinstimmen, der in der Meldung "FATAL: Rolle 'Benutzername' existiert nicht."
Geben Sie das Passwort für den Benutzernamen ein.
Geben Sie dann den Befehl erneut ein, dass die generierte Rolle nicht vorhanden ist.
quelle
Ich bin hier gelandet, nachdem ich versucht hatte, Ryan Bates Tutorial zur Bereitstellung auf AWS EC2 mit Gummi zu folgen. Folgendes ist für mich passiert: Wir haben eine neue App mit "
rails new blog -d postgresql
Offensichtlich wird dadurch eine neue App mit pg als Datenbank erstellt, aber die Datenbank wurde noch nicht erstellt. Mit sqlite führen Sie einfach rake db: migrate aus. Mit pg müssen Sie jedoch zuerst die pg-Datenbank erstellen. Ryan hat diesen Schritt nicht gemacht. Der Befehl lautet
rake db:create:all
, dann können wir ausführenrake db:migrate
Der zweite Teil ändert die Datei database.yml. Der Standardwert für den Benutzernamen beim Generieren der Datei ist "Anwendungsname". Es besteht jedoch die Möglichkeit, dass Ihre Rolle für den Postgresql-Administrator etwas anderes ist (zumindest für mich). Ich habe es in meinen Namen geändert (siehe obige Ratschläge zum Erstellen eines Rollennamens) und es war gut zu gehen.
Hoffe das hilft.
quelle
Nach einer Reihe von Installationen und Deinstallationen von Postgres scheint Folgendes nun für mich mit Os X Mavericks, Rails 4 und Ruby 2 konsistent zu funktionieren.
In der Datei database.yml ändere ich die Standardbenutzernamen in den Benutzernamen meines Computers, der für mich nur "admin" ist.
In der Kommandozeile starte ich rake db: create: all
Dann starte ich rake db: migrate
Wenn ich den Rails-Server betreibe und den lokalen Host überprüfe, wird "Willkommen an Bord" angezeigt.
quelle
Möglicherweise können Sie dies
initdb -U postgres -D /path/to/data
umgehen, indem Sie es als Benutzer postgres ausführen oder ausführen, da standardmäßig der aktuelle Benutzer verwendet wird. GL!quelle