Eu gostaria de remover / excluir um arquivo de migração. Como eu faria isso? Eu sei que existem perguntas semelhantes aqui, mas como uma atualização, há uma maneira melhor do que fazer script / destruir?
Além disso, devo fazer db:reset
ou db:drop
se eu remover / excluir uma migração?
ruby-on-rails
ruby-on-rails-3
file-io
alvincrespo
fonte
fonte
self.down
método definido em sua migração para "fazer downgrade" de seu banco de dados.rake db:migrate:status
vai te mostrar o ID do arquivo que falta, que você pode usar para recriá-lo. Quando voltar, você pode seguir o conselho desta resposta para a vitória.db:migrate:status
é um salva-vidas!Outra maneira de excluir a migração:
Use-o antes de
rake db:migrate
ser executado porque as alterações no banco de dados permanecerão para sempre :) - ou remova as alterações manualmentefonte
Execute os comandos abaixo do diretório inicial do aplicativo:
rake db:migrate:down VERSION="20140311142212"
(aqui a versão é o carimbo de data / hora prefixado por trilhos quando a migração foi criada. Esta ação irá reverter as alterações do banco de dados devido a esta migração)Run "rails destroy migration migration_name"
(migration_name é o único uso escolhido ao criar a migração. Remova " timestamp_ " do nome do arquivo de migração para obtê-lo)fonte
rails d migration migration_name
Você também pode executar uma migração para baixo como:
Consulte o guia Ruby on Rails sobre migrações para obter mais informações.
fonte
Podemos usar,
O que excluirá a migração.
fonte
Às vezes, eu me pegava excluindo o arquivo de migração e, em seguida, excluindo a entrada correspondente na tabela schema_migrations do banco de dados. Não é bonito, mas funciona.
fonte
Isso também funciona no Rails 5.
Se a migração foi a mais recente, você pode remover a (s) coluna (s) do banco de dados que a migração adicionou fazendo:
em seguida, remova o próprio arquivo de migração executando:
fonte
Olhe para 4.1 Revertendo
http://guides.rubyonrails.org/migrations.html
$ rake db: rollback
fonte
Nenhuma dessas respostas se encaixa perfeitamente no problema que eu tive, pois a migração que eu queria excluir estava faltando: Eu criei e executei uma migração em algum outro branch, que foi então descartada. O problema é que quando uma migração é executada, o rails adiciona a versão em uma
schema_migrations
tabela no banco de dados. Portanto, mesmo que não esteja listado em sua estrutura ou esquema de banco de dados, o rails procura por ele. Você pode revelar essas migrações órfãs executando:rails db:migrate:status
Observe as versões das migrações ausentes e acesse o console do db:
rails dbconsole
Agora remova as versões da tabela de migração manualmente:
delete from schema_migrations where version='<version>';
Você agora deve estar bem.
fonte
Eu apenas tive o mesmo problema:
Isso consertou para mim
fonte
Nota lateral: a partir de rails 5.0.0
rake
foi alterado pararails
Portanto, execute o seguinterails db: migrate VERSION = 0
fonte