diff --git a/backend/open_webui/migrations/versions/ca81bd47c050_add_config_table.py b/backend/open_webui/migrations/versions/ca81bd47c050_add_config_table.py index 93eecc974e..ff54232bdd 100644 --- a/backend/open_webui/migrations/versions/ca81bd47c050_add_config_table.py +++ b/backend/open_webui/migrations/versions/ca81bd47c050_add_config_table.py @@ -18,25 +18,30 @@ depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: """Create a key-value config table with versioning.""" - op.create_table( - 'config', - sa.Column('id', sa.Integer, primary_key=True), - sa.Column('data', sa.JSON(), nullable=False), - sa.Column('version', sa.Integer, nullable=False), - sa.Column( - 'created_at', - sa.DateTime(), - nullable=False, - server_default=sa.func.now(), - ), - sa.Column( - 'updated_at', - sa.DateTime(), - nullable=True, - server_default=sa.func.now(), - onupdate=sa.func.now(), - ), - ) + conn = op.get_bind() + inspector = sa.inspect(conn) + existing_tables = set(inspector.get_table_names()) + + if 'config' not in existing_tables: + op.create_table( + 'config', + sa.Column('id', sa.Integer, primary_key=True), + sa.Column('data', sa.JSON(), nullable=False), + sa.Column('version', sa.Integer, nullable=False), + sa.Column( + 'created_at', + sa.DateTime(), + nullable=False, + server_default=sa.func.now(), + ), + sa.Column( + 'updated_at', + sa.DateTime(), + nullable=True, + server_default=sa.func.now(), + onupdate=sa.func.now(), + ), + ) def downgrade() -> None: diff --git a/backend/open_webui/migrations/versions/d31026856c01_update_folder_table_data.py b/backend/open_webui/migrations/versions/d31026856c01_update_folder_table_data.py index c30cd62aac..60c2e6e9e0 100644 --- a/backend/open_webui/migrations/versions/d31026856c01_update_folder_table_data.py +++ b/backend/open_webui/migrations/versions/d31026856c01_update_folder_table_data.py @@ -16,7 +16,12 @@ depends_on = None def upgrade(): - op.add_column('folder', sa.Column('data', sa.JSON(), nullable=True)) + conn = op.get_bind() + inspector = sa.inspect(conn) + folder_cols = {c['name'] for c in inspector.get_columns('folder')} + + if 'data' not in folder_cols: + op.add_column('folder', sa.Column('data', sa.JSON(), nullable=True)) def downgrade():