2010-01-30 7 views
29

verbinden Ich hatte eine frühere question gefragt, die keine Antworten erhalten.Wie zu postgresql mit Hilfe der URL

Grundsätzlich bekomme ich einen Fehler invalid database url, wenn ich versuche, heroku db:push zu tun.

Ich dachte, ich kann versuchen, explizit die Datenbank-URL bereitzustellen.

Ich habe versucht:

heroku db:push postgres://[email protected]/myrailsdb

Aber das gab Fehler:

Failed to connect to database: 
    Sequel::DatabaseConnectionError -> PGError fe_sendauth: no password supplied 

Was ist das Format für Benutzername und Passwort bereitstellt?

Antwort

47

Versuchen Sie heroku db:push postgres://username:[email protected]/myrailsdb.

+0

Was ist, wenn Ihr lokaler Datenbankbenutzer kein Kennwort hat? – mkirk

+3

einfach das Passwort fallen, das heißt 'db Postgres drücken: // username @ localhost/myrailsdb' –

+1

Wenn kein Passwort geliefert wird, wird dies ein Fehler von konnte nicht geben Verbindung zur Datenbank: Sequel :: DatabaseConnectionError -> PGError fe_sendauth : kein Passwort angegeben – user181677

5

Bearbeiten Sie Ihre Postgresql-Konfiguration (pg_hba.conf) -Datei und ändern Sie die 'Host'-Methode auf' Trust '. Aber sei dir bewusst, dass dies nicht sicher ist.

# TYPE DATABASE  USER   ADDRESS     METHOD 

# "local" is for Unix domain socket connections only 
local all    all          trust 
# IPv4 local connections: 
host all    all    127.0.0.1/32   trust 
# IPv6 local connections: 
host all    all    ::1/128     md5 

Ihren PostgreSQL-Server neu starten und erneut den Befehl

$ heroku db:push postgres://[email protected]/myrailsdb 

Hier ist der Hinweis auf meine Antwort: https://stackoverflow.com/a/7667344/181677

+0

Wo befindet sich die Datei pg_hba.conf? – kibaekr

+0

tatsächlich, fand es. für ubuntu, Debian/Ubuntu: /etc/postgresql/9.0/main/pg_hba.conf – kibaekr

8

Hier ist, wie es in einem Ruby-Skript zu tun:

# Connect to database. 
uri = URI.parse(ENV['DATABASE_URL']) 
postgres = PG.connect(uri.hostname, uri.port, nil, nil, uri.path[1..-1], uri.user, uri.password) 

# List all tables. 
tables = postgres.exec('SELECT * FROM pg_catalog.pg_tables') 
tables.num_tuples.times do |i| 
    p tables[i] 
end 
+0

Was sind Ihre Importe/benötigt? – Nick

+0

erfordern 'uri' oops – Nick

1

Heroku cli hat den Befehl geändert.

heroku pg:push postgres://username:[email protected]/myrailsdb