Come svuotare un database Heroku


355

Sto lavorando a una webapp Ruby on Rails 3 su Heroku. Come posso svuotare il database?

Risposte:


689

Per eliminare il database, se si utilizza SHARED_DATABASE_URL:

$ heroku pg:reset DATABASE_URL

Ora per ricreare il database senza nulla al suo interno:

$ heroku run rake db:migrate  

Per popolare il database con i tuoi dati seed:

$ heroku run rake db:seed

---O---

Puoi combinare gli ultimi due ( migrazione e seeding ) in una sola azione eseguendo questo:

$ heroku run rake db:setup

Modifica 18/04/2014: rake db:setupnon funziona con Rails 4, fallisce con a Couldn't create database error.

Modifica 09-10-2014: è possibile utilizzare rake db:setupcon Rails 4. Ti dà un Couldn't create databaseerrore (perché il database è già stato creato usando il heroku pg:resetcomando). Ma carica anche lo schema del database e i semi dopo il messaggio di errore.

Puoi farlo praticamente con qualsiasi comando rake, ma ci sono eccezioni. Ad esempio, db:resetnon funziona tramite heroku run rake. Devi usare pg:resetinvece.

Ulteriori informazioni sono disponibili nella documentazione di Heroku:

Esecuzione dei comandi di rake

Ripristina DB Postgres


21
Grazie. In realtà, "heroku pg: reset --db SHARED_DATABASE_URL" ha fatto il trucco. Ma mi hai fatto andare nella giusta direzione.
Jay Godse,

5
@JayGodse Heroku ora diceSHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
Phil

6
In realtà dovresti controllare nel tuo schema.rb e dovresti usare: rake db: schema: load
Amala

18
Lo hanno cambiato di nuovo ora èheroku pg:reset DATABASE
Haris Krajina il

8
Per risparmiare un paio di secondi, usaheroku pg:reset DATABASE --confirm appname
GangstaGraham l'

97

Heroku ora ha deprecato l' --dbopzione, quindi ora usa:

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

È un po 'confuso perché usi il testo letterale SHARED_DATABASEma dove ho scritto {the name of your app}sostituisco il nome della tua app. Ad esempio, se l'app si chiama my_great_app, si utilizza:

heroku pg:reset DATABASE_URL --confirm my_great_app

3
se hai appena incollato salta il bit dopo (e incluso) il - heroku ti dirà cosa digitare ..
baash05

comando utile per ottenere il nome del database postgres su heroku: heroku config | grep HEROKU_POSTGRESQL
zero_cool

"usi il testo letterale SHARED_DATABASE"? Stai usando DATABASE_URL negli esempi di codice. Vuoi dire che?
Michael Durrant,

No. Mi riferivo all'uso delle parole dell'altra rispostaSHARED_DATABASE
Dave Sag,

65

Per eliminare il database:

$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP

Per ricreare il database:

$ heroku run rake db:migrate

Per eseguire il seeding del database:

$ heroku run rake db:seed

**Passo finale

$ heroku restart

4
Preferisco questa risposta rispetto a qualsiasi altra. Funziona perfettamente nel mio scenario su Heroku, credo che sia altamente votato!
Jonathan,

Potrebbe essere perché heroku ha cambiato la sintassi di questi comandi di recente.
George Yacoub,

1
"heroku restart" è stato l'unico pezzo chiave che mi mancava. Grazie.
Jeremy Nikolai,

heroku run rake db:migratenon ricrea più il database
Rots


13

Ora il comando è

heroku pg:reset DATABASE_URL --confirm your_app_name

in questo modo puoi specificare quale db dell'app vuoi ripristinare. Quindi puoi correre

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

o diretto per entrambi i comandi sopra

heroku run rake db:setup 

E ora il passaggio finale per riavviare l'app

heroku restart

1
Il riavvio potrebbe non essere necessario, ma è utile menzionarlo.
Francisco Quintero,

11

Ho contattato il supporto Heroku e hanno confermato che si tratta di un bug con l'ultima gemma (sto usando heroku-2.26.2)

Charlie - siamo a conoscenza di questo problema con la gemma "heroku" e stiamo lavorando per risolverlo.

Ecco il problema se ti interessa seguire - https://github.com/heroku/heroku/issues/356

Il downgrade a una versione precedente della gemma "heroku" dovrebbe aiutare. Sto usando v2.25.0 per la maggior parte di oggi senza problemi.

Esegui il downgrade con i seguenti comandi:

gem uninstall heroku

gem install heroku --version 2.25.0

Se hai già installato più gemme, potresti essere presentato con:

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

Basta disinstallare # 2 ed eseguire nuovamente il comando. Gioia!


1
Tutte le gemme sono state deprecate ora, è necessario liberarsene e installare la cintura degli attrezzi Heroku. toolbelt.heroku.com
Ghoti

9

La risposta completa è (per utenti con multi-db):

heroku pg: info - quali output

=== HEROKU_POSTGRESQL_RED <- questo è lo stato di
base del piano DB
disponibile

heroku pg: ripristina HEROKU_POSTGRESQL_RED --conferma il nome app

Maggiori informazioni sono disponibili in: https://devcenter.heroku.com/articles/heroku-postgresql


8

Ora è diverso con heroku. Prova: heroku pg: ripristina DATABASE --confirm


Per alcune app devi comunque utilizzare SHARED_DATABASE
tfwright l'

7

Oggi il comando

heroku pg:reset --db SHARED_DATABASE_URL

non funziona per piani condivisi, sto risolvendo usando

heroku pg:reset SHARED_DATABASE

6

Accedi al tuo DB usando heroku pg:psqle digita i seguenti comandi:

drop schema public cascade;
create schema public;

6

Ora è anche possibile ripristinare il database tramite la loro interfaccia web.

Vai su dashboard.heroku.com seleziona la tua app e troverai il database nella categoria dei componenti aggiuntivi, fai clic su di esso e quindi puoi ripristinare il database.

Ripristina il database Heroku


5

Controlla la tua versione di heroku. Ho appena aggiornato il mio in 2.29.0, come segue:

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

Ora puoi eseguire:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME

Quindi crea il tuo database e seminalo in un unico comando:

heroku run rake db:setup

Ora riavvia e prova la tua app:

heroku restart
heroku open

4

Questo è ciò che ha funzionato per me.

1.clear db.

heroku pg:reset --app YOUR_APP

Dopo averlo eseguito, dovrai digitare nuovamente il nome dell'app per confermare.

2.migrare db per ricreare.

heroku run rake db:migrate  --app YOUR_APP

3.aggiungere i dati del seme in db.

heroku run rake db:seed --app YOUR_APP

3

Nel caso in cui si preferisca utilizzare il sito Web Heroku:

  1. Vai su https://postgres.heroku.com/database
  2. Seleziona il database che desideri ripristinare
  3. Fai clic su un pulsante delle impostazioni nell'angolo in alto a destra
  4. Fai clic su "Ripristina database" come mostrato di seguito:
  5. digitare "RESET" e premere ok

ripristino del database heroku


2

Supponendo di voler ripristinare il database PostgreSQL e ripristinarlo, utilizzare:

heroku apps

per elencare le tue applicazioni su Heroku. Trova il nome dell'applicazione corrente ( application_name). Quindi corri

heroku config | grep POSTGRESQL

per ottenere il nome dei tuoi database. Un esempio potrebbe essere

HEROKU_POSTGRESQL_WHITE_URL

Alla fine, dato application_namee database_url, dovresti correre

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

1

Se hai effettuato l'accesso dalla console, questo farà il lavoro nell'ultima cintura degli strumenti heroku,

heroku pg: reset --conferma nome-database



0

La migliore soluzione per il tuo problema sarà

heroku pg:reset -r heroku  --confirm your_heroku_app_name

--conferma your_heroku_app_name

non è richiesto, ma il terminale mi chiede sempre di fare quel comando.

Dopo quel comando avrai puro db, senza struttura e roba, dopodiché potrai eseguire

heroku run rake db:schema:load -r heroku

o

heroku run rake db:migrate -r heroku
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.