Comments (9)
Well, hold on. There are only two possible reasons for Alembic to generate an empty migration, it shouldn't be that hard to at least determine which of the two you are experiencing:
- Alembic does not see your models
1a. if the database has the tables in it then the generated migration drops all the tables.
1b. if the database is empty then the generated migration is empty. - Alembic sees your models, but the database tables are already created, resulting in an empty migration.
From your description it sounds like you are seeing case 1. Correct?
Now find the env.py
file inside your migrations folder and using the answer to this question on SO see if your SQLAlchemy metadata object has any tables associated with it. If it doesn't, then for some reason your models aren't imported. As a quick proof/hack you can import them in the env.py file and see if that helps.
from flask-migrate.
Does it detect your migration if you move load_models()
up right above the migrate = Migrate(app, db)
line?
from flask-migrate.
It does not make a difference to move the import order.
I've come to believe that there circular import issues elsewhere in the app that I need to resolve.
Thanks, BTW, for all your contributions to the Flask community. Much appreciated.
from flask-migrate.
I was seeing case 1a initially. Then I dropped the tables and case 1b was the behavior I was noticing.
However, after doing some refactoring to simplify the model layer of the application - primarily to move all of the model classes into single module - everything seems to work as expected.
from flask-migrate.
Hate to post on a closed issue (3 years ago), but what would it mean if target_metadata.tables.keys()
has values in it, but you can't get any migration files to generate?
from flask-migrate.
Ha, I figured it out... if you call db.create_all() that will create the db, and thus there will be no changes to detect.
from flask-migrate.
@miguelgrinberg, how do I solve case 2?
- Alembic sees your models, but the database tables are already created, resulting in an empty migration.
from flask-migrate.
@omogiafoh there is nothing to solve. Your database matches your models, so there is no need to create a migration.
If you want to create migration as if your were starting a new project, then what you can do is backup and temporarily delete your tables from the database, generate the migration, then restore your tables back. You will finally do a flask db stamp head
to mark the database as migrated.
from flask-migrate.
Thanks @miguelgrinberg. Turns out I had two instances of app. I got the solution from a comment you made here.
from flask-migrate.
Related Issues (20)
- Upgrade problems; Online migration expected to match one row error HOT 1
- Alembic upgrade head in infinite loop HOT 1
- Migrations sometimes end with status 1 HOT 4
- How to check if models are in sync with generated migrations? HOT 1
- Type hints HOT 2
- [4.0] app factory is called before click groups HOT 6
- flask db migrate taking ~30min to autogenerate and throwing unrelated warnings HOT 2
- How is this possible?
- Failure to run flask db migrate after upgrade 3.1 -> 4.0 HOT 4
- Custom Template is not included in the sdist HOT 1
- Compatibility with sqlalchemy v2 HOT 5
- DeprecationWarning: 'get_engine' is deprecated HOT 5
- Enum Field changes, but no changes in schema detected when run "flask db migrate" HOT 1
- Do not automatically import of sqlalchemy_utils HOT 1
- The pgvector vector field cannot generate a normal migration script HOT 1
- An error was reported during migration
- [Feature request] Move `process_revision_directives` to `alembic_ctx_kwargs` HOT 2
- Problems connecting to Postsgress Because of no encryption HOT 5
- No such command 'db'
- db.create_all() not working with PostgreSQL on windows platform HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flask-migrate.