From 4a875f5f83479db0f1d12730e877fb8063e40816 Mon Sep 17 00:00:00 2001 From: Automated Action Date: Mon, 12 May 2025 13:00:10 +0000 Subject: [PATCH] Fix database migration error with proper Python path configuration - Added Python path configuration in migrations/env.py to correctly import app modules - Fixed SQLite database path configuration - Fixed migration revision ID format - Added proper error handling for imports Generated with BackendIM... (backend.im) --- alembic.ini | 2 +- migrations/env.py | 29 +++++++++++++++--- migrations/versions/001_initial_migration.py | 6 ++-- .../83463d3f6b97_fix_migration_identifier.py | 24 +++++++++++++++ .../001_initial_migration.cpython-311.pyc | Bin 0 -> 16433 bytes ...7_fix_migration_identifier.cpython-311.pyc | Bin 0 -> 788 bytes 6 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 migrations/versions/83463d3f6b97_fix_migration_identifier.py create mode 100644 migrations/versions/__pycache__/001_initial_migration.cpython-311.pyc create mode 100644 migrations/versions/__pycache__/83463d3f6b97_fix_migration_identifier.cpython-311.pyc diff --git a/alembic.ini b/alembic.ini index fed7809..66eb748 100644 --- a/alembic.ini +++ b/alembic.ini @@ -35,7 +35,7 @@ script_location = migrations # are written from script.py.mako # output_encoding = utf-8 -sqlalchemy.url = sqlite:///app/storage/db/db.sqlite +sqlalchemy.url = sqlite:////app/storage/db/db.sqlite [post_write_hooks] # post_write_hooks defines scripts or Python functions that are run diff --git a/migrations/env.py b/migrations/env.py index 4822939..24c64fe 100644 --- a/migrations/env.py +++ b/migrations/env.py @@ -5,6 +5,15 @@ from sqlalchemy import pool from alembic import context from pathlib import Path +import sys +import os + +# Get the directory containing this file (migrations directory) +migrations_dir = os.path.dirname(os.path.abspath(__file__)) +# Get the root project directory (parent of migrations directory) +project_root = os.path.dirname(migrations_dir) +# Add the project root to sys.path +sys.path.insert(0, project_root) # this is the Alembic Config object, which provides # access to the values within the .ini file in use. @@ -14,10 +23,16 @@ config = context.config # This line sets up loggers basically. fileConfig(config.config_file_name) -# add your model's MetaData object here -# for 'autogenerate' support -from app.db.base import Base -target_metadata = Base.metadata +# Import Base after adding project_root to sys.path +try: + from app.db.base import Base + target_metadata = Base.metadata +except ImportError as e: + print(f"Import error: {e}") + # Fallback to direct import if module structure is an issue + sys.path.append(os.path.join(project_root, 'app')) + from db.base import Base + target_metadata = Base.metadata # other values from the config, defined by the needs of env.py, # can be acquired: @@ -25,9 +40,13 @@ target_metadata = Base.metadata # ... etc. # Ensure the DB directory exists -DB_DIR = Path("/app") / "storage" / "db" +DB_DIR = Path("/app/storage/db") DB_DIR.mkdir(parents=True, exist_ok=True) +# Override sqlalchemy.url from the INI file +DB_PATH = DB_DIR / "db.sqlite" +config.set_main_option('sqlalchemy.url', f"sqlite:///{DB_PATH}") + def run_migrations_offline(): """Run migrations in 'offline' mode. diff --git a/migrations/versions/001_initial_migration.py b/migrations/versions/001_initial_migration.py index 5ceb6ad..db0a3c3 100644 --- a/migrations/versions/001_initial_migration.py +++ b/migrations/versions/001_initial_migration.py @@ -1,7 +1,7 @@ """initial migration -Revision ID: 001 -Revises: +Revision ID: 00001 +Revises: Create Date: 2025-05-12 """ @@ -11,7 +11,7 @@ from sqlalchemy import Column, Integer, String, Float, DateTime, Text, Boolean, import enum # revision identifiers, used by Alembic. -revision = '001' +revision = '00001' down_revision = None branch_labels = None depends_on = None diff --git a/migrations/versions/83463d3f6b97_fix_migration_identifier.py b/migrations/versions/83463d3f6b97_fix_migration_identifier.py new file mode 100644 index 0000000..9faccb7 --- /dev/null +++ b/migrations/versions/83463d3f6b97_fix_migration_identifier.py @@ -0,0 +1,24 @@ +"""fix migration identifier + +Revision ID: 83463d3f6b97 +Revises: 00001 +Create Date: 2025-05-12 12:59:34.013735 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '83463d3f6b97' +down_revision = '00001' +branch_labels = None +depends_on = None + + +def upgrade(): + pass + + +def downgrade(): + pass \ No newline at end of file diff --git a/migrations/versions/__pycache__/001_initial_migration.cpython-311.pyc b/migrations/versions/__pycache__/001_initial_migration.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2144fc5c1d42b76a944fa16b82252529bc7594a0 GIT binary patch literal 16433 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 literal 0 HcmV?d00001 diff --git a/migrations/versions/__pycache__/83463d3f6b97_fix_migration_identifier.cpython-311.pyc b/migrations/versions/__pycache__/83463d3f6b97_fix_migration_identifier.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cc7d5c828903ee28cdd662c8fb6b0fc0b0e2ca48 GIT binary patch literal 788 zcmah`y>8nu5GEztk`*gR(V_-AsiOzSKZ>13D7w^3mkiCO4uT}ou?k9ZNZGABdFVUz z5sExVU!bGGwNp0%*)sJgySCA#1n<*#NAh&v-FMrz5Ud~N%h?Bv&@biuUD}R3ctE}( zf_y|U(HKrOU&D&)O!sS~=GRHxZxG!#z)aHkiu@)q04<{5ppN;4O_R?~n%wfRNb<}{ z2+fLQnow?8@98oTD)?^VIj`J{u}j?PIJ&yro>1XAeOLqQEvI2Yoe6;F4Ew`Tw?FC* zhR$HEKs3_99vT2jB@Dgc(CBj>9$%)(omf+JRKNlvYv5Xm6r3X5 t{)wI+?+t>;ZkHx%y;z%@v-aBFoIL}upRBF2fpN1$docIx5L2wu{|Aug$G-po literal 0 HcmV?d00001