Cómo Reiniciar Base de Datos PostgreSQL en Heroku

Cuando se trabaja en aplicaciones Ruby on Rails es muy frecuente ir agregando campos a las tablas o nuevas tablas cada tanto tiempo en las etapas iniciales de los proyectos.

A medida que se llega a un punto estable o con muchas características implementadas, se reduce la cantidad de migraciones a generar.

También ocurre que al estar en etapas tempranas nos sentimos con mayor libertad de destruir la base de datos para facilitar el añadir nuevos campos o porque hay mucha información inservible que complica correr migraciones nuevas.

Otro caso que se da cuando se hacen aplicaciones con Ruby on Rails es subir la aplicación a Heroku. La facilidad que brinda esta plataforma es muy útil cuando estamos trabajando con RoR porque permite subir cambios con pocos comandos o con solo commits(cuando se tiene la configuración adecuada).

Sin embargo, Heroku restringe ciertas cosas para evitarse dolores de cabeza y para evitarnos a nosotros problemas. Una de esas cosas son los permisos destructivos en la base de datos del servicio Heroku Postgres.

En nuestro ambiente local es muy sencillo(y lo podemos hacer cuantas veces queramos) correr el comando rails db:drop. En Heroku no podemos hacer así de esta forma.

Cuando queremos destruir una base de datos alojada en Heroku con el servicio Heroku Postgres hay que hacerlo de otra forma.

En realidad no podemos destruir la base de datos sino recrearla, es decir, Heroku la destruye y vuelve a crear y la deja en estado en blanco para usar.

Comando heroku pg:reset

Normalmente, los comandos rake de Rails en Heroku se ejecutan de la siguiente forma:

$ heroku run rake rails db:migrate

Pero no podemos ejecutar

heroku run rake rails db:drop

Ya que no se cuenta con los permisos necesarios. En cambio, para reiniciar una base de datos hay que proceder de esta forma:

$ heroku pg:reset DATABASE

Se te pedirá confirmación del nombre de la aplicación en Heroku a la cual le quieras hacer limpieza de su base de datos.

También puedes saltarte la verificación indicando la aplicación con una bandera:

heroku pg:reset DATABASE --confirm NOMBRE-DE-APP

Luego de recreada la base de datos, podemos poblarla con alguno de estos comandos heroku run rake db:migrate o con heroku run rake db:schema:load.

Esta es la forma de hacer una recreación o reinicio de una base de datos PostgreSQL en Heroku.

Visto en Stack Overflow.

Autor: cesc1989

Ingeniero de Sistemas que le gusta escribir y compartir sobre recursos que considera útiles, además que le gusta leer manga y ver anime.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.