Je travaille sur un Ruby sur Rails 3 webapp sur Heroku. Comment vider la base de données?
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 qui ne contient rien:
$ heroku run rake db:migrate
Pour renseigner la base de données avec vos données de départ:
$ heroku run rake db:seed
---OU---
Vous pouvez combiner les deux derniers ( migrate & seed ) en une seule action en exécutant ceci:
$ heroku run rake db:setup
Modifier 2014-04-18: rake db:setup
ne fonctionne pas avec Rails 4, il échoue avec un Couldn't create database error
.
Modifier 2014-10-09: Vous pouvez utiliser rake db:setup
avec Rails 4. Cela vous donne un Couldn't create database
error (car la base de données a déjà été créée à l'aide de la commande heroku pg:reset
). Mais il charge également votre schéma de base de données et vos semences après le message d'erreur.
Vous pouvez le faire avec à peu près n'importe quelle commande de rake, mais il y a des exceptions. Par exemple, db:reset
ne fonctionne pas avec heroku run rake
. Vous devez utiliser pg:reset
à la place.
Plus d'informations peuvent être trouvées dans la documentation de Heroku:
Heroku a déconseillé d'utiliser l'option --db
, aussi utilisez maintenant:
heroku pg:reset DATABASE_URL --confirm {the name of your app}
C'est un peu déroutant parce que vous utilisez le texte littéral SHARED_DATABASE
mais là 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
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 ensemencer la base de données:
$ heroku run rake db:seed
**Dernière étape
$ heroku restart
Le courant, c'est à dire. 2017 façon de faire cela est:
heroku pg:reset DATABASE
https://devcenter.heroku.com/articles/heroku-postgresql#pg-reset
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 courir
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
J'ai contacté l'assistance de Heroku, et ils ont confirmé qu'il s'agissait d'un bogue avec la dernière gemme (j'utilise heroku-2.26.2)
Charlie - nous sommes conscients de ce problème avec le joyau 'heroku' et nous travaillons à le résoudre.
Voici le problème si vous souhaitez suivre - https://github.com/heroku/heroku/issues/356
Rétrograder à une version antérieure du joyau "heroku" devrait aider. J'ai utilisé v2.25.0 pour la plupart d'aujourd'hui sans problème.
Déclassement à l'aide des commandes suivantes:
gem uninstall heroku
gem install heroku --version 2.25.0
Si vous avez déjà plusieurs gemmes installées, 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!
La réponse complète est (pour les utilisateurs avec plusieurs bases de données):
heroku pg: info - quelles sorties
=== HEROKU_POSTGRESQL_RED <- c'est une base de données
Plan Basic
Statut disponible
heroku pg: réinitialiser HEROKU_POSTGRESQL_RED --confirm app_name
Plus d'informations dans: https://devcenter.heroku.com/articles/heroku-postgresql
Maintenant, c'est différent avec Heroku. Essayez: heroku pg: réinitialiser DATABASE --confirm
Aujourd'hui la commande
heroku pg:reset --db SHARED_DATABASE_URL
ne travaille pas pour les plans partagés, je résous en utilisant
heroku pg:reset SHARED_DATABASE
Désormais, il est également possible de réinitialiser la base de données via leur interface Web.
Allez à 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, puis vous pourrez réinitialiser la base de données.
Connectez-vous à votre base de données à l'aide de heroku pg:psql
et entrez les commandes suivantes:
drop schema public cascade;
create schema public;
Vérifiez votre version de heroku. Je viens de mettre à jour le mien à 2.29.0, comme suit:
heroku --version
#=> heroku-gem/2.29.0 (x86_64-linux) Ruby/1.9.3
Maintenant vous pouvez lancer:
heroku pg:reset DATABASE --confirm YOUR_APP_NAME
Créez ensuite votre base de données et semez-la en une seule commande:
heroku run rake db:setup
Maintenant, redémarrez et essayez votre application:
heroku restart
heroku open
Si vous préférez utiliser le site Web Heroku:
C'est ce qui a fonctionné pour moi.
1.clear db.
heroku pg:reset --app YOUR_APP
Après avoir exécuté cela, vous devrez taper à nouveau le nom de votre application pour confirmer.
2.migrer db pour recréer.
heroku run rake db:migrate --app YOUR_APP
3.ajouter des données de base à la base de données.
heroku run rake db:seed --app YOUR_APP
En supposant que vous souhaitiez réinitialiser votre base de données PostgreSQL et la configurer, utilisez:
heroku apps
lister vos applications sur Heroku. Recherchez le nom de votre application actuelle (application_name
). Puis courir
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_name
et database_url
, vous devriez exécuter
heroku pg:reset `database_url` --confirm `application_name`
heroku run rake db:migrate
heroku restart
Si vous êtes connecté à partir de la console, cela fonctionnera dans la dernière ceinture à outils de heroku,
heroku pg: reset --confirm nom-base-de-données
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 obligatoire, mais le terminal me demande toujours de faire cette commande.
Après cette commande, vous aurez une base de données pure, sans structure ni matériel, après quoi vous pourrez exécuter
heroku run rake db:schema:load -r heroku
ou
heroku run rake db:migrate -r heroku
Je fais toujours cela avec le one-liner 'heroku pg: reset DATABASE'.