Como esvaziar um banco de dados Heroku

355

Estou trabalhando em um webapp do Ruby on Rails 3 no Heroku. Como esvazio o banco de dados?

swimfar
fonte

Respostas:

689

Para descartar o banco de dados, se você estiver usando SHARED_DATABASE_URL:

$ heroku pg:reset DATABASE_URL

Agora, para recriar o banco de dados sem nada:

$ heroku run rake db:migrate  

Para preencher o banco de dados com seus dados iniciais:

$ heroku run rake db:seed

---OU---

Você pode combinar os dois últimos ( migrar e propagar ) em uma ação executando o seguinte:

$ heroku run rake db:setup

Edit 18-04-2014: rake db:setupnão funciona com o Rails 4, falha com um Couldn't create database error.

Editar 09/10/2014: você pode usar rake db:setupcom o Rails 4. Isso gera um Couldn't create databaseerro (porque o banco de dados já foi criado usando o heroku pg:resetcomando). Mas também carrega seu esquema de banco de dados e suas sementes após a mensagem de erro.

Você pode fazer isso com praticamente qualquer comando rake, mas há exceções. Por exemplo, db:resetnão funciona via heroku run rake. Você tem que usar em seu pg:resetlugar.

Mais informações podem ser encontradas na documentação do Heroku:

Executando comandos de rake

Redefinir banco de dados do Postgres

Shaun
fonte
21
Obrigado. Na verdade, "heroku pg: reset --db SHARED_DATABASE_URL" fez o truque. Mas você me fez seguir na direção certa.
Jay Godse
5
@JayGodse Heroku agora dizSHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
Phil
6
Na verdade, você deve verificar seu schema.rb e usar: rake db: schema: load
Amala
18
Eles mudaram novamente agora éheroku pg:reset DATABASE
Haris Krajina
8
Para salvar um par de segundos de tempo, useheroku pg:reset DATABASE --confirm appname
GangstaGraham
97

Heroku descontinuou a --dbopção agora, então agora use:

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

É um pouco confuso porque você usa o texto literal, SHARED_DATABASEmas onde escrevi {the name of your app}substitua o nome do seu aplicativo. Por exemplo, se seu aplicativo é chamado my_great_app, você usa:

heroku pg:reset DATABASE_URL --confirm my_great_app
Dave Sag
fonte
3
se você acabou de colar ignorar o bit após (e incluindo) o - heroku irá dizer-lhe o que digitar ..
baash05
comando útil para obter o nome do seu banco de dados postgres no heroku: heroku config | grep HEROKU_POSTGRESQL
zero_cool
"você usa o texto literal SHARED_DATABASE"? Você está usando DATABASE_URL em seus exemplos de código. Você quer dizer isso?
Michael Durrant
Não. Eu estava me referindo ao uso das palavras na outra respostaSHARED_DATABASE
Dave Sag 17/14
65

Para descartar o banco de dados:

$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP

Para recriar o banco de dados:

$ heroku run rake db:migrate

Para propagar o banco de dados:

$ heroku run rake db:seed

**Passo final

$ heroku restart
George Yacoub
fonte
4
Prefiro essa resposta a qualquer outra. Isso funciona perfeitamente no meu cenário no Heroku, acredito que é altamente votado!
24412 Jonathan
Pode ser porque o heroku alterou a sintaxe desses comandos recentemente.
George Yacoub 24/03
11
'heroku restart' foi a peça chave que eu estava perdendo. Obrigado.
Jeremy Nikolai
heroku run rake db:migratenão recria mais o banco de dados
Rots 30/09
13

Agora o comando é

heroku pg:reset DATABASE_URL --confirm your_app_name

Dessa forma, você pode especificar o banco de dados do aplicativo que deseja redefinir. Então você pode correr

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

ou direto para os dois comandos acima

heroku run rake db:setup 

E agora etapa final para reiniciar seu aplicativo

heroku restart
Syed Ehtsham Abbas
fonte
11
Reiniciar pode não ser necessário, mas é bom mencionar.
Francisco Quintero
11

Entrei em contato com o suporte do Heroku e eles confirmaram que é um bug com a última gem (estou usando o heroku-2.26.2)

Charlie - estamos cientes desse problema com a gema 'heroku' e estamos trabalhando para corrigi-lo.

Aqui está o problema, se você quiser acompanhar - https://github.com/heroku/heroku/issues/356

Fazer o downgrade para uma versão anterior da gema 'heroku' deve ajudar. Eu tenho usado a v2.25.0 durante a maior parte de hoje sem problemas.

Faça o downgrade com os seguintes comandos:

gem uninstall heroku

gem install heroku --version 2.25.0

Se você já possui várias gemas instaladas, pode ser apresentado a você:

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

Apenas desinstale o # 2 e execute novamente o comando. Alegria!

superhighfives
fonte
11
Todas as jóias estão obsoletas agora, você precisa se livrar delas e instalar o cinto de ferramentas Heroku. toolbelt.heroku.com
Ghoti
9

A resposta completa é (para usuários com multi-db):

heroku pg: info - que resultados

=== HEROKU_POSTGRESQL_RED <- este é
o
status básico do plano de banco de dados disponível

heroku pg: redefinir HEROKU_POSTGRESQL_RED --confirm app_name

Mais informações encontradas em: https://devcenter.heroku.com/articles/heroku-postgresql

Alvin K.
fonte
8

Agora é diferente com o heroku. Tente: heroku pg: reset DATABASE --confirm

jstnno
fonte
Para alguns aplicativos, você ainda precisa usar o SHARED_DATABASE
tfwright 11/11
7

Hoje o comando

heroku pg:reset --db SHARED_DATABASE_URL

não trabalhando para planos compartilhados, resolvo usar

heroku pg:reset SHARED_DATABASE
mmarqueti
fonte
6

Entre no seu banco de dados usando heroku pg:psqle digite os seguintes comandos:

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

Agora também é possível redefinir o banco de dados através de sua interface da web.

Vá para dashboard.heroku.com, selecione seu aplicativo e, em seguida, você encontrará o banco de dados na categoria de complementos, clique nele e poderá redefinir o banco de dados.

Redefinir banco de dados Heroku

Luís Ramalho
fonte
5

Verifique sua versão heroku. Acabei de atualizar o meu para 2.29.0, da seguinte maneira:

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

Agora você pode executar:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME

Em seguida, crie seu banco de dados e propague-o em um único comando:

heroku run rake db:setup

Agora reinicie e tente seu aplicativo:

heroku restart
heroku open
Flavio Wuensche
fonte
4

Isto é o que funcionou para mim.

1.claro db.

heroku pg:reset --app YOUR_APP

Após a execução, você precisará digitar o nome do aplicativo novamente para confirmar.

2.migrar db para recriar.

heroku run rake db:migrate  --app YOUR_APP

3.adicione dados de semente ao db.

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

Caso você prefira usar o site da Heroku:

  1. Vamos para https://postgres.heroku.com/databases
  2. Selecione o banco de dados que deseja redefinir
  3. Clique no botão de configurações no canto superior direito
  4. Clique em "Redefinir banco de dados", como mostrado abaixo:
  5. digite "RESET" e pressione ok

redefinição do banco de dados heroku

KIO
fonte
2

Supondo que você deseja redefinir seu banco de dados PostgreSQL e configurá-lo novamente, use:

heroku apps

para listar seus aplicativos no Heroku. Encontre o nome do seu aplicativo atual ( application_name). Então corra

heroku config | grep POSTGRESQL

para obter o nome dos seus bancos de dados. Um exemplo pode ser

HEROKU_POSTGRESQL_WHITE_URL

Finalmente, dado application_namee database_url, você deve executar

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

Se você estiver conectado a partir do console, isso fará o trabalho no último cinto de ferramentas heroku,

heroku pg: reset --confirm database-name

Charles Skariah
fonte
0

Eu sempre faço isso com o one-liner 'heroku pg: reset DATABASE'.

Mark Locklear
fonte
0

A melhor solução para o seu problema será

heroku pg:reset -r heroku  --confirm your_heroku_app_name

--confirme seu_heroku_app_name

não é necessário, mas o terminal sempre me pede para executar esse comando.

Após esse comando, você terá um banco de dados puro, sem estrutura e outras coisas, depois poderá executar

heroku run rake db:schema:load -r heroku

ou

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