Eu gostaria de fazer uma migração para um aplicativo Flask. Estou usando o Alembic.
No entanto, recebo o seguinte erro.
Target database is not up to date.
Online, li que tem algo a ver com isso. http://alembic.zzzcomputing.com/en/latest/cookbook.html#building-an-up-to-date-database-from-scratch
Infelizmente, eu não entendo muito bem como atualizar o banco de dados e onde / como devo escrever o código fornecido no link. Se você tem experiência com migrações, pode me explicar isso
obrigado
fonte
Isso pode ser resolvido de várias maneiras:
1 Para corrigir esse erro, exclua o arquivo de migração mais recente (um arquivo python) e tente realizar uma nova migração.
Se o problema ainda persistir, tente estes comandos:
$ flask db stamp head # To set the revision in the database to the head, without performing any migrations. You can change head to the required change you want. $ flask db migrate # To detect automatically all the changes. $ flask db upgrade # To apply all the changes.
fonte
Tive que excluir alguns dos meus arquivos de migração por algum motivo. Não sei por quê. Mas isso resolveu o problema, mais ou menos.
Um problema é que o banco de dados acaba sendo atualizado corretamente, com todas as novas tabelas, etc, mas os próprios arquivos de migração não mostram nenhuma alteração quando eu uso a migração automática.
Se alguém tiver uma solução melhor, por favor me avise, pois agora minha solução é meio hacky.
fonte
Base = declarative_base()
e também lembre-sefrom sqlalchemy.ext.declarative import declarative_base
$ flask db stamp head # To set the revision in the database to the head, without performing any migrations. You can change head to the required change you want. $ flask db migrate # To detect automatically all the changes. $ flask db upgrade # To apply all the changes.
Você pode encontrar mais informações na documentação https://flask-migrate.readthedocs.io/en/latest/
fonte
Também encontrei cabeças diferentes e queria mudar um dos campos de string para inteiro, então primeiro execute:
$ flask db stamp head # to make the current the same $ flask db migrate $ flask db upgrade
Está resolvido agora!
fonte
Isso também pode acontecer se você, como eu, acabou de iniciar um novo projeto e está usando o banco de dados SQLite em memória (
sqlite:///:memory:
). Se você aplicar uma migração em tal banco de dados, obviamente da próxima vez que você quiser dizer auto-gerar uma revisão, o banco de dados ainda estará em seu estado original (vazio), então o alambique reclamará que o banco de dados de destino não está à altura encontro. A solução é mudar para um banco de dados persistente.fonte
Para corrigir esse erro, exclua o arquivo de migração mais recente (um arquivo python) e tente realizar uma nova migração.
fonte
Tente eliminar todas as tabelas antes de executar o comando db upgrade.
fonte
Para resolver isso, eu descarto (excluo) as tabelas na migração e executo esses comandos
e
fonte