Comment vider une base de données Heroku


355

Je travaille sur une webapp Ruby on Rails 3 sur Heroku. Comment vider la base de données?

Réponses:


689

Pour supprimer la base de données, si vous utilisez SHARED_DATABASE_URL:

$ heroku pg:reset DATABASE_URL

Maintenant, pour recréer la base de données sans rien:

$ heroku run rake db:migrate  

Pour remplir la base de données avec vos données de départ:

$ heroku run rake db:seed

---OU---

Vous pouvez combiner les deux derniers ( migrer et amorcer ) en une seule action en exécutant ceci:

$ heroku run rake db:setup

Edit 18/04/2014: rake db:setupne fonctionne pas avec Rails 4, il échoue avec unCouldn't create database error .

Edit 2014-10-09: Vous pouvez utiliser rake db:setupavec Rails 4. Cela vous donne une Couldn't create databaseerreur (car la base de données a déjà été créée à l'aide de la heroku pg:resetcommande). Mais il charge également votre schéma de base de données et vos graines après le message d'erreur.

Vous pouvez le faire avec à peu près n'importe quelle commande rake, mais il existe des exceptions. Par exemple, db:resetne fonctionne pas via heroku run rake. Vous devez utiliserpg:reset place.

Plus d'informations peuvent être trouvées dans la documentation de Heroku:

Exécution des commandes de râteau

Réinitialiser la base de données Postgres


21
Je vous remercie. En fait, "heroku pg: reset --db SHARED_DATABASE_URL" a fait l'affaire. Mais tu m'as fait avancer dans la bonne direction.
Jay Godse

5
@JayGodse Heroku dit maintenantSHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
Phil

6
En fait, vous devez archiver votre schéma.rb et vous devez utiliser: rake db: schema: load
Amala

18
Ils l'ont changé à nouveau maintenantheroku pg:reset DATABASE
Haris Krajina

8
Pour gagner quelques secondes, utilisezheroku pg:reset DATABASE --confirm appname
GangstaGraham

97

Heroku a déprécié l' --dboption maintenant, alors maintenant utilisez:

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

C'est un peu déroutant car vous utilisez le texte littéral SHARED_DATABASEmais où j'ai écrit {the name of your app}remplacez le nom de votre application. Par exemple, si votre application s'appelle my_great_app, vous utilisez:

heroku pg:reset DATABASE_URL --confirm my_great_app

3
si vous venez de coller, sautez le bit après (et y compris) le - heroku vous dira quoi taper ..
baash05

commande utile pour obtenir le nom de votre base de données postgres sur heroku: heroku config | grep HEROKU_POSTGRESQL
zero_cool

"vous utilisez le texte littéral SHARED_DATABASE"? Vous utilisez DATABASE_URL dans vos exemples de code. Tu veux dire ça?
Michael Durrant

Nan. Je faisais référence à l'utilisation des mots dans l'autre réponseSHARED_DATABASE
Dave Sag

65

Pour supprimer la base de données:

$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP

Pour recréer la base de données:

$ heroku run rake db:migrate

Pour amorcer la base de données:

$ heroku run rake db:seed

**Dernière étape

$ heroku restart

4
Je préfère cette réponse à toute autre. Cela fonctionne parfaitement dans mon scénario sur Heroku, je pense qu'il est fortement sous-voté!
Jonathan

C'est peut-être parce que heroku a récemment changé la syntaxe de ces commandes.
George Yacoub

1
«Heroku restart» était la seule pièce clé qui me manquait. Merci.
Jeremy Nikolai

heroku run rake db:migratene recrée plus la base de données
Rots


13

Maintenant, la commande est

heroku pg:reset DATABASE_URL --confirm your_app_name

de cette façon, vous pouvez spécifier la base de données de l'application que vous souhaitez réinitialiser. Ensuite, vous pouvez exécuter

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

ou direct pour les deux commandes ci-dessus

heroku run rake db:setup 

Et maintenant, dernière étape pour redémarrer votre application

heroku restart

1
Le redémarrage peut ne pas être nécessaire mais bon point en lui donnant une mention.
Francisco Quintero

11

J'ai contacté le support Heroku, et ils ont confirmé qu'il s'agit d'un bug avec la dernière gemme (j'utilise heroku-2.26.2)

Charlie - nous sommes conscients de ce problème avec la gemme «heroku» et travaillons pour le résoudre.

Voici le problème si vous souhaitez suivre - https://github.com/heroku/heroku/issues/356

La rétrogradation vers une version antérieure de la gemme «heroku» devrait aider. J'ai utilisé la v2.25.0 pendant la majeure partie de la journée sans problème.

Rétrograder avec les commandes suivantes:

gem uninstall heroku

gem install heroku --version 2.25.0

Si vous avez déjà installé plusieurs gemmes, il se peut que l'on vous présente:

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

Désinstallez simplement # 2 et relancez la commande. Joie!


1
Toutes les gemmes sont désormais obsolètes, vous devez vous en débarrasser et installer la ceinture à outils Heroku. toolbelt.heroku.com
Ghoti


8

Maintenant, c'est différent avec heroku. Essayez: Heroku pg: réinitialiser la base de données - confirmer


Pour certaines applications, vous devez toujours utiliser SHARED_DATABASE
tfwright

7

Aujourd'hui la commande

heroku pg:reset --db SHARED_DATABASE_URL

ne fonctionne pas pour les plans partagés, je suis résolu à l'aide

heroku pg:reset SHARED_DATABASE

6

Connectez-vous à votre base de données en utilisant heroku pg:psqlet tapez les commandes suivantes:

drop schema public cascade;
create schema public;

6

Maintenant, il est également possible de réinitialiser la base de données via leur interface Web.

Accédez à dashboard.heroku.com, sélectionnez votre application, puis vous trouverez la base de données dans la catégorie des modules complémentaires, cliquez dessus et vous pourrez réinitialiser la base de données.

Réinitialiser la base de données Heroku


5

Vérifiez votre version de Heroku. Je viens de mettre à jour le mien vers 2.29.0, comme suit:

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

Vous pouvez maintenant exécuter:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME

Créez ensuite votre base de données et insérez-la dans une seule commande:

heroku run rake db:setup

Maintenant, redémarrez et essayez votre application:

heroku restart
heroku open

4

C'est ce qui a fonctionné pour moi.

1. clair db.

heroku pg:reset --app YOUR_APP

Après avoir exécuté cela, vous devrez saisir à nouveau le nom de votre application pour confirmer.

2. migrez db pour recréer.

heroku run rake db:migrate  --app YOUR_APP

3. ajoutez les données de départ à db.

heroku run rake db:seed --app YOUR_APP

3

Si vous préférez utiliser le site Web Heroku:

  1. Accédez à https://postgres.heroku.com/databases
  2. Sélectionnez la base de données que vous souhaitez réinitialiser
  3. Cliquez sur un bouton de paramètres dans le coin supérieur droit
  4. Cliquez sur "Réinitialiser la base de données" comme indiqué ci-dessous:
  5. tapez "RESET" et appuyez sur ok

réinitialisation de la base de données Heroku


2

En supposant que vous souhaitiez réinitialiser votre base de données PostgreSQL et la reconstituer, utilisez:

heroku apps

pour lister vos applications sur Heroku. Recherchez le nom de votre application actuelle ( application_name). Ensuite, exécutez

heroku config | grep POSTGRESQL

pour obtenir le nom de vos bases de données. Un exemple pourrait être

HEROKU_POSTGRESQL_WHITE_URL

Enfin, étant donné application_nameet database_url, vous devez exécuter

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

1

Si vous êtes connecté à partir de la console, cela fera le travail dans la dernière ceinture d'outils Heroku,

heroku pg: reset --confirm nom-base de données



0

La meilleure solution pour votre problème sera

heroku pg:reset -r heroku  --confirm your_heroku_app_name

--confirmez votre_nom_heroku_app

n'est pas requis, mais le terminal me demande toujours d'exécuter cette commande.

Après cette commande, vous aurez une base de données pure, sans structure ni éléments, après quoi vous pourrez exécuter

heroku run rake db:schema:load -r heroku

ou

heroku run rake db:migrate -r heroku
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.