[GH-ISSUE #9853] DB Migration is broken #15675

Closed
opened 2026-04-19 21:49:45 -05:00 by GiteaMirror · 0 comments
Owner

Originally created by @ido777 on GitHub (Feb 12, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/9853

Bug Report

DB Migration is broken

Installation Method

Docker

Environment

  • Open WebUI Version: [v0.5.10]

  • Operating System: [WSL Windows 11, Docker Desktop]

Confirmation:

  • I have read and followed all the instructions provided in the README.md.
  • I am on the latest version of both Open WebUI and Ollama.
  • I have included the browser console logs.
  • I have included the Docker container logs.
  • I have provided the exact steps to reproduce the bug in the "Steps to Reproduce" section below.

Expected Behavior:

When I run alembic revision --autogenerate -m "verify no migrate is needed"
it should say the the db is up to date

Actual Behavior:

It creates a weird migration and dropping many tables

Description

Bug Summary:

The alembic setup is not up to date with the db state.
imo the current setup is assuming that the db is constructed in 2 steps

  1. peewee-migrate
  2. alembic
    However when one add a new model everything breaks

Reproduction Details

Steps to Reproduce:
See the docker log below.
run
docker run -d -p 3000:8080 -e OPENAI_API_KEY=your_secret_key -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

and connect to the docker and run the commands bellow:

# cd open_webui
# export PYTHONPATH=.:../
# export WEBUI_SECRET_KEY=your_secret_key
# alembic history
# alembic revision --autogenerate -m "verify no migrate is needed"

Logs and Screenshots

Docker Container Logs:

docker run -d -p 3000:8080 -e OPENAI_API_KEY=your_secret_key -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

This was run within the docker exec after running the command

pwd

/app/backend

ls data

cache uploads vector_db webui.db

cd open_webui

export PYTHONPATH=.:../

export WEBUI_SECRET_KEY=your_secret_key

alembic history

/app/backend/open_webui
/app/backend
/app
7826ab40b532 -> 3781e22d8b01 (head), Update message & channel tables
57c599a3cb57 -> 7826ab40b532, Update file table
922e7a387820 -> 57c599a3cb57, Add channel table
4ace53fd72c8 -> 922e7a387820, Add group table
af906e964978 -> 4ace53fd72c8, Update folder table and change DateTime to BigInteger for timestamp fields
c29facfe716b -> af906e964978, Add feedback table
c69f45358db4 -> c29facfe716b, Update file table path
3ab32c4b8f59 -> c69f45358db4, Add folder table
1af9b942657b -> 3ab32c4b8f59, Update tags
242a2047eae0 -> 1af9b942657b, Migrate tags
6a39f3d8e55c -> 242a2047eae0, Update chat table
c0fbf31ca0db -> 6a39f3d8e55c, Add knowledge table
ca81bd47c050 -> c0fbf31ca0db, Update file table
7e5b5dc7342b -> ca81bd47c050, Add config table

-> 7e5b5dc7342b, init

alembic revision --autogenerate -m "verify no migrate is needed"

/app/backend/open_webui
/app/backend
/app
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.autogenerate.compare] Detected removed table 'channel_member'
INFO [alembic.autogenerate.compare] Detected removed index 'tool_id' on 'tool'
INFO [alembic.autogenerate.compare] Detected removed table 'tool'
INFO [alembic.autogenerate.compare] Detected removed table 'folder'
INFO [alembic.autogenerate.compare] Detected removed index 'memory_id' on 'memory'
INFO [alembic.autogenerate.compare] Detected removed table 'memory'
INFO [alembic.autogenerate.compare] Detected removed table 'message'
INFO [alembic.autogenerate.compare] Detected removed index 'model_id' on 'model'
INFO [alembic.autogenerate.compare] Detected removed table 'model'
INFO [alembic.autogenerate.compare] Detected removed index 'chatidtag_id' on 'chatidtag'
INFO [alembic.autogenerate.compare] Detected removed table 'chatidtag'
INFO [alembic.autogenerate.compare] Detected removed table 'channel'
INFO [alembic.autogenerate.compare] Detected removed index 'prompt_command' on 'prompt'
INFO [alembic.autogenerate.compare] Detected removed table 'prompt'
INFO [alembic.autogenerate.compare] Detected removed index 'function_id' on 'function'
INFO [alembic.autogenerate.compare] Detected removed table 'function'
INFO [alembic.autogenerate.compare] Detected removed table 'config'
INFO [alembic.autogenerate.compare] Detected removed table 'feedback'
INFO [alembic.autogenerate.compare] Detected removed table 'message_reaction'
INFO [alembic.autogenerate.compare] Detected removed table 'knowledge'
INFO [alembic.autogenerate.compare] Detected removed table 'migratehistory'
INFO [alembic.autogenerate.compare] Detected removed index 'document_collection_name' on 'document'
INFO [alembic.autogenerate.compare] Detected removed index 'document_name' on 'document'
INFO [alembic.autogenerate.compare] Detected removed table 'document'
INFO [alembic.autogenerate.compare] Detected NULL on column 'auth.email'
INFO [alembic.autogenerate.compare] Detected NULL on column 'auth.password'
INFO [alembic.autogenerate.compare] Detected NULL on column 'auth.active'
INFO [alembic.autogenerate.compare] Detected type change from INTEGER() to Boolean() on 'auth.active'
INFO [alembic.autogenerate.compare] Detected removed index 'auth_id' on 'auth'
INFO [alembic.autogenerate.compare] Detected NULL on column 'chat.user_id'
INFO [alembic.autogenerate.compare] Detected NULL on column 'chat.title'
INFO [alembic.autogenerate.compare] Detected NULL on column 'chat.created_at'
INFO [alembic.autogenerate.compare] Detected type change from DATETIME() to BigInteger() on 'chat.created_at'
INFO [alembic.autogenerate.compare] Detected NULL on column 'chat.updated_at'
INFO [alembic.autogenerate.compare] Detected type change from DATETIME() to BigInteger() on 'chat.updated_at'
INFO [alembic.autogenerate.compare] Detected type change from VARCHAR(length=255) to Text() on 'chat.share_id'
INFO [alembic.autogenerate.compare] Detected NULL on column 'chat.archived'
INFO [alembic.autogenerate.compare] Detected type change from INTEGER() to Boolean() on 'chat.archived'
INFO [alembic.autogenerate.compare] Detected NULL on column 'chat.meta'
INFO [alembic.autogenerate.compare] Detected removed index 'chat_id' on 'chat'
INFO [alembic.autogenerate.compare] Detected removed index 'chat_share_id' on 'chat'
INFO [alembic.autogenerate.compare] Detected added unique constraint None on '('share_id',)'
INFO [alembic.autogenerate.compare] Detected type change from TEXT() to String() on 'file.id'
INFO [alembic.autogenerate.compare] Detected NULL on column 'file.user_id'
INFO [alembic.autogenerate.compare] Detected type change from TEXT() to String() on 'file.user_id'
INFO [alembic.autogenerate.compare] Detected NULL on column 'file.filename'
INFO [alembic.autogenerate.compare] Detected NULL on column 'file.created_at'
INFO [alembic.autogenerate.compare] Detected type change from INTEGER() to BigInteger() on 'file.created_at'
INFO [alembic.autogenerate.compare] Detected removed index 'file_id' on 'file'
INFO [alembic.autogenerate.compare] Detected NULL on column 'tag.name'
INFO [alembic.autogenerate.compare] Detected NULL on column 'user.name'
INFO [alembic.autogenerate.compare] Detected NULL on column 'user.email'
INFO [alembic.autogenerate.compare] Detected NULL on column 'user.role'
INFO [alembic.autogenerate.compare] Detected NULL on column 'user.profile_image_url'
INFO [alembic.autogenerate.compare] Detected NULL on column 'user.last_active_at'
INFO [alembic.autogenerate.compare] Detected type change from INTEGER() to BigInteger() on 'user.last_active_at'
INFO [alembic.autogenerate.compare] Detected NULL on column 'user.updated_at'
INFO [alembic.autogenerate.compare] Detected type change from INTEGER() to BigInteger() on 'user.updated_at'
INFO [alembic.autogenerate.compare] Detected NULL on column 'user.created_at'
INFO [alembic.autogenerate.compare] Detected type change from INTEGER() to BigInteger() on 'user.created_at'
INFO [alembic.autogenerate.compare] Detected removed index 'user_api_key' on 'user'
INFO [alembic.autogenerate.compare] Detected removed index 'user_id' on 'user'
INFO [alembic.autogenerate.compare] Detected removed index 'user_oauth_sub' on 'user'
INFO [alembic.autogenerate.compare] Detected added unique constraint None on '('api_key',)'
INFO [alembic.autogenerate.compare] Detected added unique constraint None on '('oauth_sub',)'
Generating /app/backend/open_webui/migrations/versions/68d13d238c0f_verify_no_migrate_is_needed.py ... done

Additional Information

Related discussion: https://github.com/open-webui/open-webui/discussions/9842

Originally created by @ido777 on GitHub (Feb 12, 2025). Original GitHub issue: https://github.com/open-webui/open-webui/issues/9853 # Bug Report DB Migration is broken ## Installation Method Docker ## Environment - **Open WebUI Version:** [v0.5.10] - **Operating System:** [WSL Windows 11, Docker Desktop] **Confirmation:** - [X] I have read and followed all the instructions provided in the README.md. - [X] I am on the latest version of both Open WebUI and Ollama. - [ ] I have included the browser console logs. - [ ] I have included the Docker container logs. - [X] I have provided the exact steps to reproduce the bug in the "Steps to Reproduce" section below. ## Expected Behavior: When I run `alembic revision --autogenerate -m "verify no migrate is needed"` it should say the the db is up to date ## Actual Behavior: It creates a weird migration and dropping many tables ## Description **Bug Summary:** The alembic setup is not up to date with the db state. imo the current setup is assuming that the db is constructed in 2 steps 1) peewee-migrate 2) alembic However when one add a new model everything breaks ## Reproduction Details **Steps to Reproduce:** See the docker log below. run `docker run -d -p 3000:8080 -e OPENAI_API_KEY=your_secret_key -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main` and connect to the docker and run the commands bellow: ``` # cd open_webui # export PYTHONPATH=.:../ # export WEBUI_SECRET_KEY=your_secret_key # alembic history # alembic revision --autogenerate -m "verify no migrate is needed" ``` ## Logs and Screenshots **Docker Container Logs:** docker run -d -p 3000:8080 -e OPENAI_API_KEY=your_secret_key -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main This was run within the docker exec after running the command > # pwd > /app/backend > # ls data > cache uploads vector_db webui.db > # cd open_webui > # export PYTHONPATH=.:../ > # export WEBUI_SECRET_KEY=your_secret_key > # alembic history > /app/backend/open_webui > /app/backend > /app > 7826ab40b532 -> 3781e22d8b01 (head), Update message & channel tables > 57c599a3cb57 -> 7826ab40b532, Update file table > 922e7a387820 -> 57c599a3cb57, Add channel table > 4ace53fd72c8 -> 922e7a387820, Add group table > af906e964978 -> 4ace53fd72c8, Update folder table and change DateTime to BigInteger for timestamp fields > c29facfe716b -> af906e964978, Add feedback table > c69f45358db4 -> c29facfe716b, Update file table path > 3ab32c4b8f59 -> c69f45358db4, Add folder table > 1af9b942657b -> 3ab32c4b8f59, Update tags > 242a2047eae0 -> 1af9b942657b, Migrate tags > 6a39f3d8e55c -> 242a2047eae0, Update chat table > c0fbf31ca0db -> 6a39f3d8e55c, Add knowledge table > ca81bd47c050 -> c0fbf31ca0db, Update file table > 7e5b5dc7342b -> ca81bd47c050, Add config table > <base> -> 7e5b5dc7342b, init > > # alembic revision --autogenerate -m "verify no migrate is needed" > > /app/backend/open_webui > /app/backend > /app > INFO [alembic.runtime.migration] Context impl SQLiteImpl. > INFO [alembic.runtime.migration] Will assume non-transactional DDL. > INFO [alembic.autogenerate.compare] Detected removed table 'channel_member' > INFO [alembic.autogenerate.compare] Detected removed index 'tool_id' on 'tool' > INFO [alembic.autogenerate.compare] Detected removed table 'tool' > INFO [alembic.autogenerate.compare] Detected removed table 'folder' > INFO [alembic.autogenerate.compare] Detected removed index 'memory_id' on 'memory' > INFO [alembic.autogenerate.compare] Detected removed table 'memory' > INFO [alembic.autogenerate.compare] Detected removed table 'message' > INFO [alembic.autogenerate.compare] Detected removed index 'model_id' on 'model' > INFO [alembic.autogenerate.compare] Detected removed table 'model' > INFO [alembic.autogenerate.compare] Detected removed index 'chatidtag_id' on 'chatidtag' > INFO [alembic.autogenerate.compare] Detected removed table 'chatidtag' > INFO [alembic.autogenerate.compare] Detected removed table 'channel' > INFO [alembic.autogenerate.compare] Detected removed index 'prompt_command' on 'prompt' > INFO [alembic.autogenerate.compare] Detected removed table 'prompt' > INFO [alembic.autogenerate.compare] Detected removed index 'function_id' on 'function' > INFO [alembic.autogenerate.compare] Detected removed table 'function' > INFO [alembic.autogenerate.compare] Detected removed table 'config' > INFO [alembic.autogenerate.compare] Detected removed table 'feedback' > INFO [alembic.autogenerate.compare] Detected removed table 'message_reaction' > INFO [alembic.autogenerate.compare] Detected removed table 'knowledge' > INFO [alembic.autogenerate.compare] Detected removed table 'migratehistory' > INFO [alembic.autogenerate.compare] Detected removed index 'document_collection_name' on 'document' > INFO [alembic.autogenerate.compare] Detected removed index 'document_name' on 'document' > INFO [alembic.autogenerate.compare] Detected removed table 'document' > INFO [alembic.autogenerate.compare] Detected NULL on column 'auth.email' > INFO [alembic.autogenerate.compare] Detected NULL on column 'auth.password' > INFO [alembic.autogenerate.compare] Detected NULL on column 'auth.active' > INFO [alembic.autogenerate.compare] Detected type change from INTEGER() to Boolean() on 'auth.active' > INFO [alembic.autogenerate.compare] Detected removed index 'auth_id' on 'auth' > INFO [alembic.autogenerate.compare] Detected NULL on column 'chat.user_id' > INFO [alembic.autogenerate.compare] Detected NULL on column 'chat.title' > INFO [alembic.autogenerate.compare] Detected NULL on column 'chat.created_at' > INFO [alembic.autogenerate.compare] Detected type change from DATETIME() to BigInteger() on 'chat.created_at' > INFO [alembic.autogenerate.compare] Detected NULL on column 'chat.updated_at' > INFO [alembic.autogenerate.compare] Detected type change from DATETIME() to BigInteger() on 'chat.updated_at' > INFO [alembic.autogenerate.compare] Detected type change from VARCHAR(length=255) to Text() on 'chat.share_id' > INFO [alembic.autogenerate.compare] Detected NULL on column 'chat.archived' > INFO [alembic.autogenerate.compare] Detected type change from INTEGER() to Boolean() on 'chat.archived' > INFO [alembic.autogenerate.compare] Detected NULL on column 'chat.meta' > INFO [alembic.autogenerate.compare] Detected removed index 'chat_id' on 'chat' > INFO [alembic.autogenerate.compare] Detected removed index 'chat_share_id' on 'chat' > INFO [alembic.autogenerate.compare] Detected added unique constraint None on '('share_id',)' > INFO [alembic.autogenerate.compare] Detected type change from TEXT() to String() on 'file.id' > INFO [alembic.autogenerate.compare] Detected NULL on column 'file.user_id' > INFO [alembic.autogenerate.compare] Detected type change from TEXT() to String() on 'file.user_id' > INFO [alembic.autogenerate.compare] Detected NULL on column 'file.filename' > INFO [alembic.autogenerate.compare] Detected NULL on column 'file.created_at' > INFO [alembic.autogenerate.compare] Detected type change from INTEGER() to BigInteger() on 'file.created_at' > INFO [alembic.autogenerate.compare] Detected removed index 'file_id' on 'file' > INFO [alembic.autogenerate.compare] Detected NULL on column 'tag.name' > INFO [alembic.autogenerate.compare] Detected NULL on column 'user.name' > INFO [alembic.autogenerate.compare] Detected NULL on column 'user.email' > INFO [alembic.autogenerate.compare] Detected NULL on column 'user.role' > INFO [alembic.autogenerate.compare] Detected NULL on column 'user.profile_image_url' > INFO [alembic.autogenerate.compare] Detected NULL on column 'user.last_active_at' > INFO [alembic.autogenerate.compare] Detected type change from INTEGER() to BigInteger() on 'user.last_active_at' > INFO [alembic.autogenerate.compare] Detected NULL on column 'user.updated_at' > INFO [alembic.autogenerate.compare] Detected type change from INTEGER() to BigInteger() on 'user.updated_at' > INFO [alembic.autogenerate.compare] Detected NULL on column 'user.created_at' > INFO [alembic.autogenerate.compare] Detected type change from INTEGER() to BigInteger() on 'user.created_at' > INFO [alembic.autogenerate.compare] Detected removed index 'user_api_key' on 'user' > INFO [alembic.autogenerate.compare] Detected removed index 'user_id' on 'user' > INFO [alembic.autogenerate.compare] Detected removed index 'user_oauth_sub' on 'user' > INFO [alembic.autogenerate.compare] Detected added unique constraint None on '('api_key',)' > INFO [alembic.autogenerate.compare] Detected added unique constraint None on '('oauth_sub',)' > Generating /app/backend/open_webui/migrations/versions/68d13d238c0f_verify_no_migrate_is_needed.py ... done > ## Additional Information Related discussion: https://github.com/open-webui/open-webui/discussions/9842
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#15675