Redefina o banco de dados (limpe tudo) e propague um banco de dados

159

Existe um comando rake para limpar os dados nas tabelas do banco de dados?

Como crio um script db: seed para preencher previamente os dados em minhas tabelas?

Blankman
fonte

Respostas:

160

Você pode excluir tudo e recriar banco de dados + sementes com ambos:

  1. rake db:reset: carrega do schema.rb
  2. rake db:drop db:create db:migrate db:seed: cargas de migrações

Verifique se você não possui conexões com o db (servidor Rails, sql client ..) ou se o db não será eliminado.

schema.rb é uma captura instantânea do estado atual do seu banco de dados gerado por:

rake db:schema:dump
Laffuste
fonte
Agradecemos por lembrar as pessoas de desativar qualquer servidor para garantir que o banco de dados seja descartado corretamente.
aardvarkk
6

Se você não quiser eliminar e recriar todo o shebang apenas para recarregar seus dados, poderá usar MyModel.destroy_all(ou delete_all) no arquivo seed.db para limpar uma tabela antes que suas MyModel.create!(...)instruções carreguem os dados. Em seguida, você pode refazer a db:seedoperação repetidamente. (Obviamente, isso afeta apenas as tabelas nas quais você carregou os dados, e não o restante).

Há um "truque sujo" em https://stackoverflow.com/a/14957893/4553442 para adicionar uma operação de "remoção de propagação" semelhante à migração para cima e para baixo ...

Tom Hundt
fonte
inteligente, recriando tudo do zero cada vez que levou para longa para mim
m02ph3u5
5

A partir do Rails 5, a rakeferramenta de linha de comando tinha um alias railsagora

rails db:reset ao invés de rake db:reset

vai funcionar tão bem

DazBaldwin
fonte
0

Você pode usar rake db:resetquando quiser descartar o banco de dados local e começar do zero com os dados carregados db/seeds.rb. Este é um comando útil quando você ainda está descobrindo seu esquema e geralmente precisa adicionar campos aos modelos existentes.

Depois que o comando de redefinição for usado, ele fará o seguinte: Descarte o banco de dados: rake db:drop Carregue o esquema: rake db:schema:load propague os dados:rake db:seed

Mas se você quiser eliminar completamente o seu banco de dados, poderá usá-lo rake db:drop. A eliminação do banco de dados também removerá qualquer conflito de esquema ou dados incorretos. Se você deseja manter os dados que possui, faça o backup antes de executar este comando.

Este é um artigo detalhado sobre os comandos mais importantes do banco de dados rake .

Nesha Zoric
fonte