Pergunta

O rake db: migrar só adicionar novas migrações, ou ele cair todas as migrações / mudanças e construir tudo novos

Eu acho ancinho está jogando um erro porque ele está tentando acessar um atributo da tabela na migração 040 que foi excluído da migração 042. alguma forma o meu DB e ancinho estão fora de sincronia e eu quero corrigi-los.

para você especialistas lá fora - é comum para ancinho para obter fora de sincronia com as migrações? como posso evitar isso (não, eu não mão-editar meus arquivos de esquema ou de rake).

Foi útil?

Solução

Toda vez que você cria uma migração usando scripts (como script / gerar modelo ...) uma nova migração é adicionado ao diretório correto pronto para ser sincronizado com o banco de dados real.

Na verdade rake db:. Apenas cheques Migrar que migrações faltando ainda precisam ser aplicadas ao banco de dados sem se preocupar com os previouse

É claro que se você modificar o banco de dados usando outras maneiras é comum para obter fora de sincronia coisas porque como você disse que você pode encontrar-se a aplicação de uma migração para algo que é alterado por baixo.

Outras dicas

Quando você usa trilhos migrações, uma tabela chamada schema_migrations é criado automaticamente, o que mantém o controle do que as migrações têm sido aplicados, ao armazenar o número da versão de cada migração (este é o número que prefácios o nome de migração no nome do arquivo, ou seja, db / migre / _20090617111204__migration.rb). Quando você executa rake db:migrate a migrar para cima, apenas migrações que não tenham sido executados anteriormente (ie. A sua versão não está contido na tabela) será executado (por esta razão, mudando uma migração que já foi executado não terão efeito quando executado db:migrate ). Ao migrar para baixo, todas as versões encontradas em schema_migrations que são maiores do que a versão que está rolando de volta para será desfeita.

Um meio de migração que você se move a partir da versão atual para uma versão mais recente (como é dito na primeira resposta). Usando rake db: migrar você pode aplicar quaisquer novas alterações em seu esquema. Mas se você quiser reverter para uma migração anterior, você pode usar rake db: rollback para anular suas novas alterações se forem definidos incorretamente. Cuidado:., Ao fazer isso seus dados serão perdidos

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top