example - heroku postgres pricing
Push base de datos a heroku: cómo usar heroku pg: push (3)
Necesitas el siguiente comando
PGUSER=root PGPWD=root heroku pg:push (local database name) DATABASE_URL --app heroku (app name)
asegúrese de haber ingresado el nombre de usuario y la contraseña correctos de postgres
Quiero enviar mi base de datos local de postgresql a heroku, usando el heroku pg:push
. El comando se ve así: heroku pg:push mylocaldb DATABASE --app sushi
según el documento heroku: https://devcenter.heroku.com/articles/heroku-postgresql .
Aquí está mi información de la base de datos local:
Name: mysitedb
User: bill
Password: bill
La variable de entorno DATABASE_URL en mi máquina está configurada en: postgres://bill:bill@localhost/mysitedb
.
El nombre de mi aplicación es secure-gorge-4090
. Intenté heroku pg:push mysitedb DATABASE --app secure-gorge-4090
. La salida fue:
! Remote database is not empty.
! Please create a new database, or use `heroku pg:reset`
Me sorprendió que no haya puesto nada en mi BASE DE DATOS. Pero todavía ejecuté heroku pg:reset DATABASE
para restablecer mi BASE DE DATOS. Después de eso, intenté heroku pg:push mysitedb DATABASE --app secure-gorge-4090
nuevamente, pero la salida seguía siendo la misma.
Intenté heroku pg:push postgres://bill:bill@localhost:8000/mysitedb DATABASE --app secure-gorge-4090
. La salida fue:
! LOCAL_SOURCE_DATABASE is not a valid database name
No sé cómo usar este comando para mover mi base de datos local a heroku. Necesito tu ayuda. ¡Gracias!
¿De verdad está escribiendo en el token DATABASE
en sus comandos, o es un marcador de posición que está utilizando para esta pregunta? De los documentos a los que vinculó :
Like pull but in reverse, pg:push will push data from a local database into
a remote Heroku Postgres database. The command looks like this:
$ heroku pg:push mylocaldb HEROKU_POSTGRESQL_MAGENTA --app sushi
This command will take the local database “mylocaldb” and push it to the
database at DATABASE_URL on the app “sushi”. In order to prevent accidental
data overwrites and loss, the remote database must be empty. You will be
prompted to pg:reset an already a remote database that is not empty.
Usage of the PGUSER and PGPASSWORD for your local database is also supported
for pg:push, just like for the pg:pull commands.
Cuando hagas heroku config -a secure-gorge-4090
, deberías ver una entrada para HEROKU_POSTGRESQL_[SOME COLOR NAME]
. Asegúrate de estar usando cualquier token en lugar de DATABASE
en tus comandos.
Como tiene un nombre de usuario y una contraseña en su base de datos local, también necesita hacer la parte mencionada sobre PGUSER
y PGPASSWORD
. Aquí está el ejemplo de la pg:pull
docs:
$ PGUSER=postgres PGPASSWORD=password heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi
Entonces deberías hacer algo como:
$ PGUSER=bill PGPASSWORD=bill heroku pg:push mysitedb HEROKU_POSTGRESQL_[SOME COLOR] -a secure-gorge-4090
Sé que esta es una vieja discusión, pero tenía exactamente el mismo problema. Aunque no es tan conveniente, logré lograr esto a través de pg: copias de seguridad en su lugar.
Esto se detalla muy bien en el sitio de soporte heroku
Comience por instalar el complemento gratuito pgbackups:
heroku addons:add pgbackups
Luego haga una copia de seguridad de la base de datos usando su utilidad local pg_dump (incluida en la distribución PostGreSQL)
pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dmp
A continuación, coloque ese archivo de volcado en algún lugar URL-addressible (por ejemplo, Dropbox) y ejecute la importación heroku (asegúrese de que sea comillas dobles para Windows):
heroku pg:backups:restore ''https://dropbox.com/dYAKjgzSTNVp4jzE/mydb.dmp'' DATABASE_URL