Ok, então isso parece uma coisa muito boba de se perguntar, e tenho certeza que estou perdendo alguma coisa em algum lugar.
Como você executa uma migração para trás usando o South no Django?
Então, aprimorei meus modelos, criei uma migração schemamigration
, executei a migração migrate
e agora percebo que não era exatamente isso que eu queria, e que quero isso de volta antes.
Além de editar manualmente as tabelas db e remover os arquivos de migração, como devo reverter a migração? Encontro referências a migrações anteriores usando o Sul via Google, mas ainda não encontrei um exemplo de código sólido.
Alguém pode ajudar?
django
migration
django-south
Ruiwen
fonte
fonte
Respostas:
Você precisa descobrir o número da migração antes da que deseja reverter.
Seu aplicativo deve ter um diretório de migrações, com arquivos nomeados como
Normalmente, quando você executa
./manage.py migrate your_app
, o Sul executa todas as novas migrações, em ordem. (Ele examina as tabelas do banco de dados para decidir quais são 'novas').No entanto, você também pode especificar qualquer migração por número, e o Sul migrará seu banco de dados, para frente ou para trás , para levá-lo a esse ponto. Portanto, com os arquivos de exemplo acima, se você já migrou até 0003 e desejou executar o 0003 ao contrário (desfazendo-o com eficiência), executaria
South examinaria o banco de dados, perceberia que já executou 0003 e determinaria que deve executar a migração reversa para 0003 para retornar a 0002.
fonte
Apenas no caso de alguém (como eu) se perguntar como migrar de volta do inicial (0001) :
resultado:
"zero" é um estado especial antes de qualquer migração.
Referência: http://south.aeracode.org/docs/commands.html
fonte
migrate 0000
que não funcionou. Sobre a migração falsa, sim, você pode precisar dela, se, por exemplo, precisar desfazer apenas a migração inicial (provavelmente incorreta), mas o histórico da migração pensa que essa migração nunca aconteceu.Adicione um nome de migração no final dos parâmetros:
fonte
00xx
- é suficiente. Ao melhorar e testar uma migração, você pode ter os dois comandos no histórico: encaminhar (sem argumento), retroceder com o número do estado anterior.