Jak opróżnić bazę danych Heroku

355

Pracuję nad aplikacją internetową Ruby on Rails 3 na Heroku. Jak opróżnić bazę danych?

pływanie
źródło

Odpowiedzi:

689

Aby usunąć bazę danych, jeśli używasz SHARED_DATABASE_URL:

$ heroku pg:reset DATABASE_URL

Teraz, aby odtworzyć bazę danych bez niczego:

$ heroku run rake db:migrate  

Aby wypełnić bazę danych danymi źródłowymi:

$ heroku run rake db:seed

---LUB---

Możesz połączyć dwie ostatnie ( migrację i seed ) w jedną akcję, wykonując to:

$ heroku run rake db:setup

Edytuj 18.04.2014: rake db:setupnie działa z Rails 4, nie działa z Couldn't create database error.

Edytuj 2014-10-09: Możesz używać rake db:setupz Rails 4. Daje to Couldn't create databasebłąd (ponieważ baza danych została już utworzona za pomocą heroku pg:resetpolecenia). Ale ładuje również schemat bazy danych i nasiona po komunikacie o błędzie.

Możesz to zrobić za pomocą dowolnej komendy rake, ale są wyjątki. Na przykład db:resetnie działa przez heroku run rake. Zamiast tego musisz użyć pg:reset.

Więcej informacji można znaleźć w dokumentacji Heroku:

Uruchamianie poleceń prowizji

Resetuj DB Postgres

Shaun
źródło
21
Dziękuję Ci. W rzeczywistości „heroku pg: reset --db SHARED_DATABASE_URL” załatwiło sprawę. Ale doprowadziłeś mnie we właściwym kierunku.
Jay Godse
5
@JayGodse Heroku mówi terazSHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
Phil
6
Właściwie powinieneś sprawdzać w schema.rb i powinieneś użyć: rake db: schema: load
Amala
18
Zmienili to ponownie terazheroku pg:reset DATABASE
Haris Krajina
8
Aby zaoszczędzić kilka sekund czasu, użyjheroku pg:reset DATABASE --confirm appname
GangstaGraham
97

Heroku wycofało już tę --dbopcję, więc użyj teraz:

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

To trochę mylące, ponieważ używasz dosłownego tekstu, SHARED_DATABASEale tam, gdzie napisałem, {the name of your app}zastąp nazwę swojej aplikacji. Na przykład, jeśli twoja aplikacja nazywa się my_great_app, używasz:

heroku pg:reset DATABASE_URL --confirm my_great_app
Dave Sag
źródło
3
jeśli po prostu wkleisz pomiń kawałek po (i włącznie) - heroku powie ci, co wpisać ..
baash05
przydatne polecenie, aby uzyskać nazwę bazy danych postgres na heroku: heroku config | grep HEROKU_POSTGRESQL
zero_cool
„używasz dosłownego tekstu SHARED_DATABASE”? Używasz DATABASE_URL w swoich przykładach kodu. Czy masz na myśli że?
Michael Durrant
Nie. Odniosłem się do użycia słów w drugiej odpowiedziSHARED_DATABASE
Dave Sag,
65

Aby usunąć bazę danych:

$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP

Aby ponownie utworzyć bazę danych:

$ heroku run rake db:migrate

Aby zainicjować bazę danych:

$ heroku run rake db:seed

**Ostatni krok

$ heroku restart
George Yacoub
źródło
4
Wolę tę odpowiedź niż jakąkolwiek inną. Działa to doskonale w moim scenariuszu na Heroku, uważam, że jest mocno przegłosowane!
Jonathan
Być może dlatego, że heroku ostatnio zmieniło składnię tych poleceń.
George Yacoub
1
„ponowne uruchomienie heroku” było jedynym kluczowym elementem, którego mi brakowało. Dzięki.
Jeremy Nikolai
heroku run rake db:migratenie tworzy już bazy danych
Rots
13

Teraz polecenie jest

heroku pg:reset DATABASE_URL --confirm your_app_name

w ten sposób możesz określić bazę danych aplikacji, którą chcesz zresetować. Potem możesz biec

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

lub bezpośrednio dla obu powyższych poleceń

heroku run rake db:setup 

A teraz ostatni krok do ponownego uruchomienia aplikacji

heroku restart
Syed Ehtsham Abbas
źródło
1
Ponowne uruchomienie może nie być konieczne, ale warto wspomnieć o tym.
Francisco Quintero,
11

Skontaktowałem się z obsługą Heroku, a oni potwierdzili, że jest to błąd związany z najnowszym klejnotem (używam heroku-2.26.2)

Charlie - zdajemy sobie sprawę z tego problemu z klejnotem „heroku” i pracujemy nad jego rozwiązaniem.

Oto problem, jeśli zależy Ci na kontynuacji - https://github.com/heroku/heroku/issues/356

Przejście na wcześniejszą wersję klejnotu „heroku” powinno pomóc. Używam v2.25.0 przez większość dnia bez problemu.

Zmień wersję za pomocą następujących poleceń:

gem uninstall heroku

gem install heroku --version 2.25.0

Jeśli masz już zainstalowanych wiele klejnotów, możesz otrzymać:

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

Po prostu odinstaluj # 2 i uruchom ponownie polecenie. Radość!

superhighfives
źródło
1
Wszystkie klejnoty są już nieaktualne, musisz się ich pozbyć i zainstalować pasek narzędzi Heroku. toolbelt.heroku.com
Ghoti
9

Kompletna odpowiedź (dla użytkowników z multi-db):

heroku pg: info - które wyjścia

=== HEROKU_POSTGRESQL_RED <- dostępny jest status
podstawowy planu DB

heroku pg: reset HEROKU_POSTGRESQL_RED - potwierdź nazwę aplikacji

Więcej informacji można znaleźć w: https://devcenter.heroku.com/articles/heroku-postgresql

Alvin K.
źródło
8

Teraz różni się od Heroku. Spróbuj: heroku pg: reset DATABASE --confirm

jstnno
źródło
W przypadku niektórych aplikacji nadal musisz używać SHARED_DATABASE
tfwright
7

Dzisiaj polecenie

heroku pg:reset --db SHARED_DATABASE_URL

nie działa dla wspólnych planów, rozwiązuję za pomocą

heroku pg:reset SHARED_DATABASE
mmarqueti
źródło
6

Zaloguj się do swojej bazy danych, używając heroku pg:psqli wpisz następujące polecenia:

drop schema public cascade;
create schema public;
manish_s
źródło
6

Teraz można również zresetować bazę danych za pomocą interfejsu internetowego.

Wejdź na dashboard.heroku.com, wybierz aplikację, a następnie znajdziesz bazę danych w kategorii dodatków, kliknij ją, a następnie możesz zresetować bazę danych.

Zresetuj bazę danych Heroku

Luís Ramalho
źródło
5

Sprawdź swoją wersję heroku. Właśnie zaktualizowałem mój do 2.29.0 w następujący sposób:

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

Teraz możesz uruchomić:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME

Następnie utwórz bazę danych i umieść ją w jednym poleceniu:

heroku run rake db:setup

Teraz uruchom ponownie i wypróbuj aplikację:

heroku restart
heroku open
Flavio Wuensche
źródło
4

To działało dla mnie.

1. wyczyść db.

heroku pg:reset --app YOUR_APP

Po uruchomieniu musisz ponownie wpisać nazwę aplikacji, aby potwierdzić.

2. migruj bazę danych, aby ponownie utworzyć.

heroku run rake db:migrate  --app YOUR_APP

3. dodaj dane nasion do db.

heroku run rake db:seed --app YOUR_APP
Ronny Kibet
źródło
3

Jeśli wolisz korzystać ze strony internetowej Heroku:

  1. Przejdź do https://postgres.heroku.com/databases
  2. Wybierz bazę danych, którą chcesz zresetować
  3. Kliknij przycisk ustawień w prawym górnym rogu
  4. Kliknij „Resetuj bazę danych”, jak pokazano poniżej:
  5. wpisz „RESET” i naciśnij OK

reset bazy danych heroku

KIO
źródło
2

Zakładając, że chcesz zresetować bazę danych PostgreSQL i ustawić ją ponownie, użyj:

heroku apps

aby wyświetlić listę aplikacji w Heroku. Znajdź nazwę swojej bieżącej aplikacji ( application_name). Następnie uruchomić

heroku config | grep POSTGRESQL

aby uzyskać nazwę swoich baz danych. Przykładem może być

HEROKU_POSTGRESQL_WHITE_URL

Wreszcie podane application_namei database_urlnależy uruchomić

heroku pg:reset `database_url` --confirm `application_name`
heroku run rake db:migrate
heroku restart
RileyE
źródło
1

Jeśli jesteś zalogowany z konsoli, wykona to zadanie w najnowszym pasku narzędzi heroku,

heroku pg: reset --confirm nazwa-bazy danych

Charles Skariah
źródło
0

Zawsze robię to z jednowierszowym „heroku pg: reset DATABASE”.

Mark Locklear
źródło
0

Najlepszym rozwiązaniem będzie Twój problem

heroku pg:reset -r heroku  --confirm your_heroku_app_name

- potwierdź swoją nazwę aplikacji_heroku

nie jest wymagane, ale terminal zawsze pyta mnie o wykonanie tego polecenia.

Po tym poleceniu będziesz miał czystą db, bez struktury i innych rzeczy, po czym będziesz mógł uruchomić

heroku run rake db:schema:load -r heroku

lub

heroku run rake db:migrate -r heroku
Dmitrij Gusiew
źródło