Eu tenho o seguinte arquivo de migração db\migrate\20100905201547_create_blocks.rb
Como posso reverter especificamente esse arquivo de migração?
ruby-on-rails
schema
database-schema
rollback
Um aprendiz
fonte
fonte
Class.down
stackoverflow.com/questions/753919/run-a-single-migration-fileRespostas:
É uma maneira de fazer isso, se a migração que você deseja reverter for a última aplicada. Você pode substituir 1 por quantas migrações quiser voltar.
Por exemplo:
Também reverterá toda a migração que ocorreu posteriormente (4, 3, 2 e também 1).
Para reverter todas as migrações de volta para (e incluindo) uma migração de destino, use: (Este comando corrigido foi adicionado APÓS todos os comentários apontando o erro na postagem original)
Para reverter APENAS UMA migração específica (FORA DE PEDIDO), use:
Observe que isso NÃO reverterá nenhuma migração intercalada - apenas a listada. Se não foi isso que você pretendia, é possível executar com segurança
rake db:migrate
e ele será executado novamente apenas um, ignorando outros que não foram revertidos anteriormente.E se você quiser migrar uma única migração fora de ordem, também há o inverso
db:migrate:up
:fonte
STEP=-1
. Eu fiz isso uma vez e ficou louco, revertendo tudo. Não é legal! Este foi o Rails 4.2 - acho que já pode ser corrigido agora.reverterá o arquivo específico.
Para encontrar a versão de todas as migrações, você pode usar este comando:
Ou simplesmente o prefixo do nome do arquivo da migração é a versão que você precisa reverter.
Veja a entrada do guia Ruby on Rails sobre migrações.
fonte
Para reverter a última migração, você pode fazer:
Se você deseja reverter uma migração específica com uma versão, faça:
Por exemplo, se a versão for 20141201122027, você fará:
para reverter essa migração específica.
fonte
Você pode reverter sua migração usando
rake db:rollback
com opções diferentes. A sintaxe será diferente de acordo com seus requisitos.Se você deseja reverter apenas a última migração, poderá usar
ou
Se você deseja reverter o número de migrações de uma só vez, basta passar um argumento:
onde
n
é o número de migrações para reversão, contando desde a migração mais recente.Se você deseja reverter para uma migração específica, deve passar a versão da migração da seguinte maneira:
onde xxxxx é o número da versão da migração.
fonte
rake db:migrate:down VERSION=your_migrations's_version_number_here
A versão é o prefixo numérico no nome do arquivo da migração
Como encontrar a versão :
Seus arquivos de migração são armazenados no seu
rails_root/db/migrate
diretório. Encontre o arquivo apropriado até o qual deseja reverter e copie o número do prefixo.por exemplo
nome do arquivo:
20140208031131_create_roles.rb
a versão é20140208031131
fonte
rake db:migrate:status
Revertendo a última migração:
Revertendo o último
n
número de migraçõesRetrocedendo uma Migração Específica
fonte
Para reverter a última migração, você pode fazer:
Se você deseja reverter uma migração específica com uma versão, faça:
Se o arquivo de migração que você deseja reverter foi chamado
db/migrate/20141201122027_create_some_table.rb
, a VERSÃO dessa migração será20141201122027
, que é o carimbo de data e hora de quando essa migração foi criada e o comando para reverter essa migração seria:fonte
Se for uma migração reversível e a última que foi executada, execute
rake db:rollback
. E você sempre pode usar a versão. por exemploo arquivo de migração é 20140716084539_create_customer_stats.rb, portanto, o comando de reversão será,
rake db:migrate:down VERSION=20140716084539
fonte
Para reverter todas as migrações até uma versão específica (por exemplo
20181002222222
), use:(Observe que isso é usado
db:migrate
- nãodb:migrate:down
como em outras respostas a esta pergunta.)Supondo que a versão de migração especificada seja anterior à versão atual, isso reverterá todas as migrações até, mas não incluindo, a versão especificada.
Por exemplo, se for
rake db:migrate:status
exibido inicialmente:Corrida:
Vai resultar em:
Referência: https://makandracards.com/makandra/845-migrate-or-revert-only-some-migrations
fonte
Do Guia Rails
Revertendo migrações anteriores
Você pode usar a capacidade do Active Record para reverter migrações usando o
revert
método:O
revert
método também aceita um bloco de instruções para reverter. Isso pode ser útil para reverter partes selecionadas de migrações anteriores. Por exemplo, vamos imaginar que o CreateBlock seja confirmado e mais tarde seja decidido que seria melhor usar as validações do Active Record, no lugar da restrição CHECK, para verificar o CEP.A mesma migração também poderia ter sido escrita sem o uso de reversão, mas isso envolveria mais algumas etapas: reverter a ordem de create_table e reversible, substituir create_table por drop_table e finalmente substituir up por down e vice-versa. Tudo isso é resolvido por reversão.
fonte
As migrações alteram o estado do banco de dados usando o comando
Podemos desfazer uma única etapa de migração usando
Para voltar ao começo, podemos usar
Como você pode imaginar, a substituição de qualquer outro número por 0 migra para esse número de versão, onde os números de versão vêm listando as migrações sequencialmente
fonte
Bem, no Rails 5 é bastante fácil o rake db: migrate: status ou o rails db: migrate: status
Foi modificado para lidar da mesma maneira. Em seguida, escolha a versão que você deseja reverter e execute o rake db: migrate VERSION = 2013424230423
Verifique se VERSION possui todas as letras maiúsculas
Se você tiver algum problema com alguma etapa da migração ou ficar preso no meio, simplesmente vá para o arquivo de migração e comente as linhas que já foram migradas.
espero que ajude
fonte
Se você deseja reverter e migrar, você pode executar:
É o mesmo que:
fonte