๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

FastAPI

(๋ฒˆ์™ธ) Alembic ‘Target database is not up to date’ ์˜ค๋ฅ˜ ์›์ธ ์ง„๋‹จ

๋ฐ˜์‘ํ˜•

๐Ÿ“˜ ๋ฌธ์ œ(Problem) – Alembic ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์˜ค๋ฅ˜ ๋ถ„์„

๋‹ค์Œ์€ Python FastAPI + SQLAlchemy + Alembic์„ ์‚ฌ์šฉํ•˜์—ฌ SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์ •ํ•˜๋˜ ์ค‘ ๋ฐœ์ƒํ•œ ์‹ค์ œ ์ฝ˜์†” ์ถœ๋ ฅ์ด๋‹ค.


[์ง€๋ฌธ]

๊ฐœ๋ฐœ์ž๋Š” SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(myapi.db)์™€ Alembic์„ ์ด์šฉํ•ด ๋ชจ๋ธ์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

 
$ alembic revision --autogenerate -m "init" INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. ERROR [alembic.util.messaging] Target database is not up to date. FAILED: Target database is not up to date.

๋˜ํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ DB ํŒŒ์ผ์„ ์‚ญ์ œํ•œ ํ›„์—๋„ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚ฌ๋‹ค.

๊ฐœ๋ฐœ ํ™˜๊ฒฝ์˜ ์ฃผ์š” ํŒŒ์ผ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

~/Documents/FastAPI/ 
โ”œโ”€ alembic.ini 
โ”œโ”€ migrations/ 
โ”‚ โ”œโ”€ versions/ 
โ”‚ โ”‚ โ””โ”€ (์ด์ „์— ์ƒ์„ฑ๋œ migration ํŒŒ์ผ๋“ค ์กด์žฌ) 
โ”œโ”€ models.py 
โ”œโ”€ database.py 
โ””โ”€ myapi.db

Alembic ์„ค์ •(env.py)์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ชจ๋ธ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์žˆ๋‹ค.

 
from models import Base target_metadata = Base.metadata

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค URL์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 
SQLALCHEMY_DATABASE_URL = "sqlite:///./myapi.db"
 

๊ฐœ๋ฐœ์ž๋Š” DB ํŒŒ์ผ(myapi.db)์„ ์‚ญ์ œํ–ˆ์œผ๋‚˜, Alembic์€ ๊ณ„์† ๋™์ผํ•œ ์˜ค๋ฅ˜๋ฅผ ์ถœ๋ ฅํ•˜์˜€๋‹ค.
๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค์Œ ์ฝ”๋“œ๋กœ Alembic์ด ์‹ค์ œ๋กœ ์ฝ๋Š” DB ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ–ˆ๋‹ค.

 
abs_path = os.path.abspath("./myapi.db") 
print(abs_path, os.path.exists(abs_path))
๊ทธ ๊ฒฐ๊ณผ ๋‹ค์Œ ์ถœ๋ ฅ์ด ๋‚˜์™”๋‹ค.

 

 
/home/tkddus21/Documents/FastAPI/myapi.db ์กด์žฌ ์—ฌ๋ถ€: True

[๋ฌธ์ œ]

1) ์œ„ ์ƒํ™ฉ์—์„œ Alembic์ด "Target database is not up to date"๋ฅผ ์ถœ๋ ฅํ•œ ์ด์œ ๋ฅผ ๊ธฐ์ˆ ํ•˜์‹œ์˜ค.

2) ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹จ์ˆœํžˆ DB ํŒŒ์ผ์„ ์‚ญ์ œํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Alembic์ด ๊ณ„์† ์˜ค๋ฅ˜๋ฅผ ์ถœ๋ ฅํ•œ ๊ทผ๋ณธ ์›์ธ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.

3) ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ๋˜ ์ •ํ™•ํ•œ ์กฐ์น˜(๋ช…๋ น์–ด ํฌํ•จ)๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๋ฐ˜์‘ํ˜•