Ich bin neu bei Postgres und bei Heroku. Ich versuche die Datenbank von Heroku zu holen, aber mir fehlt etwas einfaches. Ich tat:
heroku pg:pull HEROKU_POSTGRESQL_IVORY_URL localdb
Und ich habe den Fehler bekommen:
createdb: database creation failed: ERROR: permission denied to create database
Dann habe ich das gleiche mit "Sudo" versucht. und ich habe:
createdb: could not connect to database template1: FATAL: role "root" does not exist
Es muss also sein, dass mir einige einfache Befehle fehlen, die ich nicht finden kann. Im Linux habe ich Postgres installiert und funktioniert.
createdb
ist ein Wrapper um die SQL-Anweisung CREATE DATABASE
und muss daher eine Verbindung zur Datenbank herstellen.
Standardmäßig versuchen alle Postgres-Befehlszeilentools, eine Verbindung mit der Datenbank unter Verwendung des aktuellen Betriebssystembenutzers herzustellen. Wie aus der Fehlermeldung hervorgeht, befindet sich in der Datenbank kein Benutzer mit dem Namen root
. Sie müssen also den Namen des Postgres-Superuser übergeben, damit createdb
eine Verbindung herstellen kann. Dieser Benutzer hat normalerweise den Namen postgres
.
Eine andere Option ist, den Linux-Benutzer auf postgres
zu setzen, wenn ein solcher Linux-Benutzer vorhanden ist.
Ich kenne Heroku nicht und ich weiß nicht, wie Sie createdb
gestartet haben, aber der Parameter, an den ein Benutzername übergeben wird, ist -U
(für alle Postgres-Befehlszeilenprogramme). Sie würden also brauchen
createdb -U postgres name_of_new_database
Versuchen zu benutzen:
Sudo su - postgres
Dann erstellt mit:
createdb name_of_db;