jonra1993 / fastapi-alembic-sqlmodel-async

This is a project template which uses FastAPI, Pydantic 2.0, Alembic and async SQLModel as ORM. It shows a complete async CRUD using authentication and role base access control.
MIT License
879 stars 143 forks source link

ERROR [alembic.util.messaging] Can't locate revision identified #6

Closed mbnoimi closed 1 year ago

mbnoimi commented 1 year ago

I use recent commit 81983dc2927f7f9f417b723ff4bf4705c3426276

fastapi_server  | 2022-07-30 12:32:43,203 INFO sqlalchemy.engine.Engine select pg_catalog.version()
fastapi_server  | INFO  [sqlalchemy.engine.Engine] select pg_catalog.version()
fastapi_server  | INFO  [sqlalchemy.engine.Engine] [raw sql] ()
fastapi_server  | 2022-07-30 12:32:43,205 INFO sqlalchemy.engine.Engine [raw sql] ()
fastapi_server  | 2022-07-30 12:32:43,343 INFO sqlalchemy.engine.Engine select current_schema()
fastapi_server  | INFO  [sqlalchemy.engine.Engine] select current_schema()
fastapi_server  | 2022-07-30 12:32:43,343 INFO sqlalchemy.engine.Engine [raw sql] ()
fastapi_server  | INFO  [sqlalchemy.engine.Engine] [raw sql] ()
fastapi_server  | 2022-07-30 12:32:43,385 INFO sqlalchemy.engine.Engine show standard_conforming_strings
fastapi_server  | 2022-07-30 12:32:43,388 INFO sqlalchemy.engine.Engine [raw sql] ()
fastapi_server  | INFO  [sqlalchemy.engine.Engine] show standard_conforming_strings
fastapi_server  | INFO  [sqlalchemy.engine.Engine] [raw sql] ()
fastapi_server  | INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
fastapi_server  | INFO  [alembic.runtime.migration] Will assume transactional DDL.
fastapi_server  | INFO  [sqlalchemy.engine.Engine] BEGIN (implicit)
fastapi_server  | INFO  [sqlalchemy.engine.Engine] select relname from pg_class c join pg_namespace n on n.oid=c.relnamespace where pg_catalog.pg_table_is_visible(c.oid) and relname=%s
fastapi_server  | INFO  [sqlalchemy.engine.Engine] [generated in 0.00079s] ('alembic_version',)
fastapi_server  | 2022-07-30 12:32:43,428 INFO sqlalchemy.engine.Engine BEGIN (implicit)
fastapi_server  | 2022-07-30 12:32:43,431 INFO sqlalchemy.engine.Engine select relname from pg_class c join pg_namespace n on n.oid=c.relnamespace where pg_catalog.pg_table_is_visible(c.oid) and relname=%s
fastapi_server  | 2022-07-30 12:32:43,439 INFO sqlalchemy.engine.Engine [generated in 0.00079s] ('alembic_version',)
fastapi_server  | 2022-07-30 12:32:43,467 INFO sqlalchemy.engine.Engine SELECT alembic_version.version_num 
fastapi_server  | FROM alembic_version
fastapi_server  | 2022-07-30 12:32:43,544 INFO sqlalchemy.engine.Engine [generated in 0.07736s] ()
fastapi_server  | INFO  [sqlalchemy.engine.Engine] SELECT alembic_version.version_num 
fastapi_server  | FROM alembic_version
fastapi_server  | INFO  [sqlalchemy.engine.Engine] [generated in 0.07736s] ()
fastapi_server  | INFO  [sqlalchemy.engine.Engine] ROLLBACK
fastapi_server  | 2022-07-30 12:32:44,291 INFO sqlalchemy.engine.Engine ROLLBACK
fastapi_server  | ERROR [alembic.util.messaging] Can't locate revision identified by 'f157607648d6'
fastapi_server  | FAILED: Can't locate revision identified by 'f157607648d6'
fastapi_server exited with code 255
Stefan2409 commented 1 year ago

This happens if you delete a revision as mentioned here: https://onebite.dev/solve-error-alembic-cant-locate-revision-identified-by-id_number/

mbnoimi commented 1 year ago

This happens if you delete a revision as mentioned here: https://onebite.dev/solve-error-alembic-cant-locate-revision-identified-by-id_number/

Thank you @Stefan2409 I recreated all the containers from scratch (which will give me an empty database) but this issue still occurs. BTW, I didn't delete any revision I only cloned this repository and create .env as mentioned in README.md

jonra1993 commented 1 year ago

Hello @mbnoimi that is because in my last commit I changed the model and add a new alembic revision. Also, each time you run docker-compose -f docker-compose-dev.yml exec fastapi_server alembic revision --autogenerate Alembic generates a new revision on database.

image

The faster solution could be you delete db_docker folder from your root project folder and run the project again with the following commands.

docker-compose -f docker-compose-dev.yml up --build
docker-compose -f docker-compose-dev.yml exec fastapi_server python app/initial_data.py