J'avais posé une question plus tôt question qui n'a reçu aucune réponse.
En gros, j'obtiens une erreur invalid database url
quand j'essaye de faire heroku db:Push
.
J'ai pensé que je pouvais essayer de fournir explicitement l'url de la base de données.
J'ai essayé:
heroku db:Push postgres://postgres@localhost/myrailsdb
Mais cela a donné une erreur:
Failed to connect to database:
Sequel::DatabaseConnectionError -> PGError fe_sendauth: no password supplied
Quel est le format pour fournir le nom d'utilisateur et le mot de passe?
Essayez heroku db:Push postgres://username:password@localhost/myrailsdb
.
Voici comment le faire dans un script Ruby:
# 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
Modifiez votre fichier de configuration postgresql (pg_hba.conf) et remplacez la méthode de type "Host" par "trust". Mais sachez que ce n'est pas sûr.
# 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
Redémarrez votre serveur postgresql et réexécutez la commande
$ heroku db:Push postgres://postgres@localhost/myrailsdb
Voici la référence à ma réponse: https://stackoverflow.com/a/7667344/181677
selon la documentation
postgresql://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
exemples
postgresql://
postgresql://localhost
postgresql://localhost:5432
postgresql://localhost/mydb
postgresql://user@localhost
postgresql://user:secret@localhost
postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp
postgresql://localhost/mydb?user=other&password=secret
Heroku cli a changé la commande.
heroku pg:Push postgres://username:password@localhost/myrailsdb