So leeren Sie eine Heroku-Datenbank

355

Ich arbeite an einer Ruby on Rails 3-Webanwendung auf Heroku. Wie entleere ich die Datenbank?

Swimfar
quelle

Antworten:

689

So löschen Sie die Datenbank, wenn Sie Folgendes verwenden SHARED_DATABASE_URL:

$ heroku pg:reset DATABASE_URL

Um nun die Datenbank mit nichts darin neu zu erstellen :

$ heroku run rake db:migrate  

So füllen Sie die Datenbank mit Ihren Startdaten:

$ heroku run rake db:seed

---ODER---

Sie können die letzten beiden ( migrieren & Startwert ) zu einer Aktion kombinieren, indem Sie Folgendes ausführen:

$ heroku run rake db:setup

Edit 2014-04-18: rake db:setupfunktioniert nicht mit Rails 4, es schlägt mit a fehl Couldn't create database error.

Edit 2014-10-09: Sie können rake db:setupmit Rails 4 verwenden. Es wird ein Couldn't create databaseFehler angezeigt (da die Datenbank bereits mit dem heroku pg:resetBefehl erstellt wurde). Es lädt aber auch Ihr Datenbankschema und Ihre Seeds nach der Fehlermeldung.

Sie können dies mit so ziemlich jedem Rechenbefehl tun, aber es gibt Ausnahmen. Funktioniert zum Beispiel db:resetnicht über heroku run rake. Du musst benutzenpg:reset stattdessen verwenden.

Weitere Informationen finden Sie in der Dokumentation von Heroku:

Ausführen von Rake-Befehlen

Postgres DB zurücksetzen

Shaun
quelle
21
Vielen Dank. Tatsächlich hat "heroku pg: reset --db SHARED_DATABASE_URL" den Trick gemacht. Aber du hast mich in die richtige Richtung gebracht.
Jay Godse
5
@ JayGodse Heroku sagt jetztSHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
Phil
6
Eigentlich sollten Sie in Ihre schema.rb einchecken und Sie sollten verwenden: rake db: schema: load
Amala
18
Sie haben es jetzt wieder geändert istheroku pg:reset DATABASE
Haris Krajina
8
Verwenden Sieheroku pg:reset DATABASE --confirm appname
GangstaGraham
97

Heroku hat die --dbOption jetzt abgelehnt. Verwenden Sie jetzt:

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

Es ist ein wenig verwirrend, weil Sie den wörtlichen Text verwenden, SHARED_DATABASEaber wo ich geschrieben habe, {the name of your app}ersetzen Sie den Namen Ihrer App. Wenn Ihre App beispielsweise my_great_app heißt, verwenden Sie:

heroku pg:reset DATABASE_URL --confirm my_great_app
Dave Sag
quelle
3
Wenn Sie nur einfügen, überspringen Sie das Bit nach (und einschließlich) dem - Heroku wird Ihnen sagen, was Sie
eingeben sollen
nützlicher Befehl, um den Namen Ihrer Postgres-Datenbank auf heroku abzurufen: heroku config | grep HEROKU_POSTGRESQL
zero_cool
"Sie verwenden den wörtlichen Text SHARED_DATABASE"? Sie verwenden DATABASE_URL in Ihren Codebeispielen. Meinst du das
Michael Durrant
Nee. Ich bezog mich auf die Verwendung der Wörter durch die andere AntwortSHARED_DATABASE
Dave Sag
65

So löschen Sie die Datenbank:

$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP

So erstellen Sie die Datenbank neu:

$ heroku run rake db:migrate

So setzen Sie die Datenbank:

$ heroku run rake db:seed

**Letzter Schritt

$ heroku restart
George Yacoub
quelle
4
Ich bevorzuge diese Antwort gegenüber allen anderen. Dies funktioniert perfekt in meinem Szenario auf Heroku, ich glaube, es ist stark unterbewertet!
Jonathan
Dies könnte daran liegen, dass Heroku kürzlich die Syntax dieser Befehle geändert hat.
George Yacoub
1
"Heroku-Neustart" war das Schlüsselstück, das mir fehlte. Vielen Dank.
Jeremy Nikolai
heroku run rake db:migrateerstellt die Datenbank nicht mehr neu
Rots
13

Jetzt ist der Befehl

heroku pg:reset DATABASE_URL --confirm your_app_name

Auf diese Weise können Sie angeben, welche Datenbank der App Sie zurücksetzen möchten. Dann kannst du rennen

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

oder direkt für beide oben genannten Befehle

heroku run rake db:setup 

Und jetzt der letzte Schritt, um Ihre App neu zu starten

heroku restart
Syed Ehtsham Abbas
quelle
1
Ein Neustart ist möglicherweise nicht erforderlich, aber es ist sinnvoll, ihn zu erwähnen.
Francisco Quintero
11

Ich habe den Heroku-Support kontaktiert und sie haben bestätigt, dass es sich um einen Fehler mit dem neuesten Juwel handelt (ich verwende Heroku-2.26.2).

Charlie - wir sind uns dieses Problems mit dem 'Heroku'-Edelstein bewusst und arbeiten daran, es zu beheben.

Hier ist das Problem, wenn Sie mitmachen möchten: https://github.com/heroku/heroku/issues/356

Ein Downgrade auf eine frühere Version des 'Heroku'-Edelsteins sollte helfen. Ich habe v2.25.0 für den größten Teil des heutigen Tages ohne Probleme verwendet.

Downgrade mit folgenden Befehlen:

gem uninstall heroku

gem install heroku --version 2.25.0

Wenn Sie bereits mehrere Edelsteine ​​installiert haben, wird Ihnen möglicherweise Folgendes angezeigt:

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

Deinstallieren Sie einfach # 2 und führen Sie den Befehl erneut aus. Freude!

Superhighfives
quelle
1
Alle Edelsteine ​​sind jetzt veraltet. Sie müssen sie entfernen und den Heroku-Werkzeuggürtel installieren. toolbelt.heroku.com
Ghoti
9

Die vollständige Antwort lautet (für Benutzer mit Multi-DB):

heroku pg: info - welche ausgänge

=== HEROKU_POSTGRESQL_RED <- Dies ist der verfügbare DB
Plan- Basisstatus

heroku pg: HEROKU_POSTGRESQL_RED zurücksetzen - app_name bestätigen

Weitere Informationen finden Sie unter: https://devcenter.heroku.com/articles/heroku-postgresql

Alvin K.
quelle
8

Jetzt ist es anders mit Heroku. Versuchen Sie: heroku pg: reset DATABASE --confirm

jstnno
quelle
Für einige Apps müssen Sie noch SHARED_DATABASE
tfwright
7

Heute der Befehl

heroku pg:reset --db SHARED_DATABASE_URL

Ich arbeite nicht für gemeinsame Pläne

heroku pg:reset SHARED_DATABASE
mmarqueti
quelle
6

Melden Sie sich mit heroku pg:psqlden folgenden Befehlen bei Ihrer Datenbank an und geben Sie Folgendes ein:

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

Jetzt ist es auch möglich, die Datenbank über ihre Weboberfläche zurückzusetzen.

Gehen Sie zu dashboard.heroku.com, wählen Sie Ihre App aus und Sie finden die Datenbank unter der Kategorie Add-Ons. Klicken Sie darauf und Sie können die Datenbank zurücksetzen.

Heroku-Datenbank zurücksetzen

Luís Ramalho
quelle
5

Überprüfen Sie Ihre Heroku-Version. Ich habe meine gerade wie folgt auf 2.29.0 aktualisiert:

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

Jetzt können Sie ausführen:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME

Erstellen Sie dann Ihre Datenbank und legen Sie sie in einem einzigen Befehl fest:

heroku run rake db:setup

Starten Sie jetzt neu und testen Sie Ihre App:

heroku restart
heroku open
Flavio Wuensche
quelle
4

Das hat bei mir funktioniert.

1.clear db.

heroku pg:reset --app YOUR_APP

Nach dem Ausführen müssen Sie Ihren App-Namen erneut eingeben, um dies zu bestätigen.

2. Migrieren Sie die Datenbank, um sie neu zu erstellen.

heroku run rake db:migrate  --app YOUR_APP

3. Fügen Sie db Seed-Daten hinzu.

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

Falls Sie die Heroku-Website bevorzugen:

  1. Gehen Sie zu https://postgres.heroku.com/databases
  2. Wählen Sie die Datenbank aus, die Sie zurücksetzen möchten
  3. Klicken Sie auf eine Einstellungsschaltfläche in der rechten oberen Ecke
  4. Klicken Sie wie unten gezeigt auf "Datenbank zurücksetzen":
  5. Geben Sie "RESET" ein und drücken Sie OK

Heroku-Datenbank zurückgesetzt

KIO
quelle
2

Angenommen, Sie möchten Ihre PostgreSQL-Datenbank zurücksetzen und wieder einrichten, verwenden Sie:

heroku apps

um Ihre Anwendungen auf Heroku aufzulisten. Suchen Sie den Namen Ihrer aktuellen Anwendung ( application_name). Dann renne

heroku config | grep POSTGRESQL

um den Namen Ihrer Datenbanken zu erhalten. Ein Beispiel könnte sein

HEROKU_POSTGRESQL_WHITE_URL

Schließlich gegeben application_nameund database_url, sollten Sie laufen

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

Wenn Sie über die Konsole angemeldet sind, erledigt dies die Aufgabe im neuesten Heroku-Toolbelt.

heroku pg: reset - Datenbankname bestätigen

Charles Skariah
quelle
0

Ich mache das immer mit dem Einzeiler 'heroku pg: reset DATABASE'.

Mark Locklear
quelle
0

Die beste Lösung für Ihr Problem wird sein

heroku pg:reset -r heroku  --confirm your_heroku_app_name

--bestätige deinen_heroku_app_namen

ist nicht erforderlich, aber das Terminal bittet mich immer, diesen Befehl auszuführen.

Nach diesem Befehl haben Sie eine reine Datenbank ohne Struktur und Zeug, danach können Sie ausführen

heroku run rake db:schema:load -r heroku

oder

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