Cómo vaciar una base de datos Heroku

355

Estoy trabajando en una aplicación web Ruby on Rails 3 en Heroku. ¿Cómo vacío la base de datos?

swimfar
fuente

Respuestas:

689

Para descartar la base de datos, si está utilizando SHARED_DATABASE_URL:

$ heroku pg:reset DATABASE_URL

Ahora para recrear la base de datos sin nada:

$ heroku run rake db:migrate  

Para rellenar la base de datos con sus datos semilla:

$ heroku run rake db:seed

---O---

Puede combinar los dos últimos ( migrar y inicializar ) en una sola acción ejecutando esto:

$ heroku run rake db:setup

Editar 2014-04-18:rake db:setup no funciona con Rails 4, falla con a Couldn't create database error.

Editar 2014-10-09: Puede usar rake db:setupcon Rails 4. Le da un Couldn't create databaseerror (porque la base de datos ya se creó usando elheroku pg:reset comando). Pero también carga su esquema de base de datos y sus semillas después del mensaje de error.

Puede hacer esto con casi cualquier comando de rastrillo, pero hay excepciones. Por ejemplo, db:resetno funciona a través de heroku run rake. Tienes que usarpg:reset en lugar.

Se puede encontrar más información en la documentación de Heroku:

Ejecución de comandos de rastrillo

Restablecer DB de Postgres

Shaun
fuente
21
Gracias. En realidad, "heroku pg: reset --db SHARED_DATABASE_URL" hizo el truco. Pero me tienes yendo en la dirección correcta.
Jay Godse
55
@JayGodse Heroku ahora diceSHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
Phil
66
En realidad, debería estar revisando su schema.rb y debería usar: rake db: schema: load
Amala
18
Lo han cambiado de nuevo ahora esheroku pg:reset DATABASE
Haris Krajina
8
Para ahorrar un par de segundos, useheroku pg:reset DATABASE --confirm appname
GangstaGraham
97

Heroku ha desaprobado la --dbopción ahora, así que ahora usa:

heroku pg:reset DATABASE_URL --confirm {the name of your app}

Es un poco confuso porque usa el texto literal, SHARED_DATABASEpero donde lo he escrito {the name of your app}sustituya el nombre de su aplicación. Por ejemplo, si su aplicación se llama my_great_app, entonces usa:

heroku pg:reset DATABASE_URL --confirm my_great_app
Dave Sag
fuente
3
si solo pega, omita el bit después (e incluye) el - heroku le dirá qué escribir ...
baash05
comando útil para obtener el nombre de su base de datos postgres en heroku: heroku config | grep HEROKU_POSTGRESQL
zero_cool
"usas el texto literal SHARED_DATABASE"? Estás utilizando DATABASE_URL en tus ejemplos de código. ¿Quieres decir que?
Michael Durrant
No Me refería al uso de las palabras de la otra respuestaSHARED_DATABASE
Dave Sag
65

Para descartar la base de datos:

$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP

Para recrear la base de datos:

$ heroku run rake db:migrate

Para sembrar la base de datos:

$ heroku run rake db:seed

**Último paso

$ heroku restart
George Yacoub
fuente
44
Prefiero esta respuesta sobre cualquier otra. Esto funciona perfectamente en mi escenario en Heroku, ¡creo que está muy poco votado!
Jonathan
Puede ser porque heroku cambió la sintaxis de estos comandos recientemente.
George Yacoub
1
'reinicio de heroku' fue la pieza clave que me faltaba. Gracias.
Jeremy Nikolai
heroku run rake db:migrateya no recrea la base de datos
Rots
13

Ahora el comando es

heroku pg:reset DATABASE_URL --confirm your_app_name

de esta manera puede especificar qué base de datos de la aplicación desea restablecer. Entonces puedes correr

heroku run rake db:migrate 
heroku run rake db:seed 

o directo para los dos comandos anteriores

heroku run rake db:setup 

Y ahora paso final para reiniciar tu aplicación

heroku restart
Syed Ehtsham Abbas
fuente
1
Puede que no sea necesario reiniciar, pero es bueno mencionarlo.
Francisco Quintero
11

Me puse en contacto con el soporte de Heroku, y confirmaron que es un error con la última gema (estoy usando heroku-2.26.2)

Charlie: somos conscientes de este problema con la gema 'heroku' y estamos trabajando para solucionarlo.

Este es el problema si desea seguirlo: https://github.com/heroku/heroku/issues/356

La degradación a una versión anterior de la gema 'heroku' debería ayudar. He estado usando v2.25.0 durante la mayor parte de hoy sin problemas.

Baje de categoría con los siguientes comandos:

gem uninstall heroku

gem install heroku --version 2.25.0

Si ya tiene varias gemas instaladas, se le puede presentar:

Select gem to uninstall:
 1. heroku-2.25.0
 2. heroku-2.26.2
 3. All versions

Simplemente desinstale el n. ° 2 y vuelva a ejecutar el comando. ¡Alegría!

superhighfives
fuente
1
Todas las gemas han quedado en desuso ahora, debes deshacerte de ellas e instalar el cinturón de herramientas Heroku. toolbelt.heroku.com
Ghoti
9

La respuesta completa es (para usuarios con multi-db):

heroku pg: info - que produce

=== HEROKU_POSTGRESQL_RED <- este es el estado
básico del plan DB
disponible

heroku pg: restablecer HEROKU_POSTGRESQL_RED --confirmar nombre_aplicación

Más información encontrada en: https://devcenter.heroku.com/articles/heroku-postgresql

Alvin K.
fuente
8

Ahora es diferente con heroku. Prueba: heroku pg: reset BASE DE DATOS --confirmar

jstnno
fuente
Para algunas aplicaciones aún necesita usar SHARED_DATABASE
tfwright
7

Hoy el comando

heroku pg:reset --db SHARED_DATABASE_URL

no funciona para planes compartidos, estoy decidida a usar

heroku pg:reset SHARED_DATABASE
mmarqueti
fuente
6

Inicie sesión en su base de datos utilizando heroku pg:psqly escriba los siguientes comandos:

drop schema public cascade;
create schema public;
manish_s
fuente
6

Ahora también es posible restablecer la base de datos a través de su interfaz web.

Vaya a dashboard.heroku.com, seleccione su aplicación y luego encontrará la base de datos en la categoría de complementos, haga clic en ella y luego puede restablecer la base de datos.

Restablecer base de datos Heroku

Luís Ramalho
fuente
5

Comprueba tu versión de heroku. Acabo de actualizar el mío a 2.29.0, de la siguiente manera:

heroku --version
#=> heroku-gem/2.29.0 (x86_64-linux) ruby/1.9.3

Ahora puedes ejecutar:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME

Luego crea tu base de datos y siembra en un solo comando:

heroku run rake db:setup

Ahora reinicie y pruebe su aplicación:

heroku restart
heroku open
Flavio Wuensche
fuente
4

Esto es lo que funcionó para mí.

1.bd claro.

heroku pg:reset --app YOUR_APP

Después de ejecutarlo, deberá volver a escribir el nombre de su aplicación para confirmar.

2.migrate db para recrear.

heroku run rake db:migrate  --app YOUR_APP

3.Agregar datos semilla a db.

heroku run rake db:seed --app YOUR_APP
Ronny Kibet
fuente
3

En caso de que prefiera usar el sitio web de Heroku:

  1. Vaya a https://postgres.heroku.com/databases
  2. Seleccione la base de datos que desea restablecer
  3. Haga clic en un botón de configuración en la esquina superior derecha
  4. Haga clic en "Restablecer base de datos" como se muestra a continuación:
  5. escribe "RESET" y presiona ok

restablecimiento de la base de datos heroku

KIO
fuente
2

Suponiendo que desea restablecer su base de datos PostgreSQL y volver a configurarla, use:

heroku apps

para enumerar sus aplicaciones en Heroku. Encuentra el nombre de tu aplicación actual ( application_name). Entonces corre

heroku config | grep POSTGRESQL

para obtener el nombre de sus bases de datos. Un ejemplo podría ser

HEROKU_POSTGRESQL_WHITE_URL

Finalmente, dado application_namey database_url, deberías correr

heroku pg:reset `database_url` --confirm `application_name`
heroku run rake db:migrate
heroku restart
RileyE
fuente
1

Si ha iniciado sesión desde la consola, esto hará el trabajo en el último cinturón de herramientas heroku,

heroku pg: reset --confirma nombre-base de datos

Charles Skariah
fuente
0

Siempre hago esto con la frase 'heroku pg: reset DATABASE'.

Mark Locklear
fuente
0

La mejor solución para su problema será

heroku pg:reset -r heroku  --confirm your_heroku_app_name

--confirme your_heroku_app_name

no es obligatorio, pero el terminal siempre me pide que haga ese comando.

Después de ese comando, tendrá db puro, sin estructura y demás, después de eso puede ejecutar

heroku run rake db:schema:load -r heroku

o

heroku run rake db:migrate -r heroku
Dmitriy Gusev
fuente