[GH-ISSUE #20067] issue: Concurrent migration execution can cause database schema corruption when using multiple Uvicorn workers #57742

Closed
opened 2026-05-05 21:32:09 -05:00 by GiteaMirror · 4 comments
Owner

Originally created by @OrenZhang on GitHub (Dec 21, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/20067

Check Existing Issues

  • I have searched for any existing and/or related issues.
  • I have searched for any existing and/or related discussions.
  • I have also searched in the CLOSED issues AND CLOSED discussions and found no related items (your issue might already be addressed on the development branch!).
  • I am using the latest version of Open WebUI.

Installation Method

Docker

Open WebUI Version

v0.6.41

Ollama Version (if applicable)

No response

Operating System

Ubuntu 24

Browser (if applicable)

No response

Confirmation

  • I have read and followed all instructions in README.md.
  • I am using 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 every relevant configuration, setting, and environment variable used in my setup.
  • I have clearly listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc).
  • I have documented step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation. My steps:
  • Start with the initial platform/version/OS and dependencies used,
  • Specify exact install/launch/configure commands,
  • List URLs visited, user input (incl. example values/emails/passwords if needed),
  • Describe all options and toggles enabled or changed,
  • Include any files or environmental changes,
  • Identify the expected and actual result at each stage,
  • Ensure any reasonably skilled user can follow and hit the same issue.

Expected Behavior

Migrations should be serialized (only one process performs migrations at a time). All workers should wait until migrations complete before continuing.

Actual Behavior

Occasionally, migrations run in parallel, causing DB structure failures (missing columns, errors on schema setup, etc.) as reported by users. This is not always reproducible but is strongly correlated with cases where the DB schema was not updated as expected.

Steps to Reproduce

  1. Deploy open-webui using Docker or another method that allows specifying multiple Uvicorn workers.
  2. Start the application; allow migrations to run on startup.
  3. Sometimes, errors will occur because migrations from multiple workers run simultaneously, leading to migration inconsistencies or failed DB updates.

Logs & Screenshots

sqlite3.OperationalError: duplicate column name: share_id

Additional Information

No response

Originally created by @OrenZhang on GitHub (Dec 21, 2025). Original GitHub issue: https://github.com/open-webui/open-webui/issues/20067 ### Check Existing Issues - [x] I have searched for any existing and/or related issues. - [x] I have searched for any existing and/or related discussions. - [x] I have also searched in the CLOSED issues AND CLOSED discussions and found no related items (your issue might already be addressed on the development branch!). - [x] I am using the latest version of Open WebUI. ### Installation Method Docker ### Open WebUI Version v0.6.41 ### Ollama Version (if applicable) _No response_ ### Operating System Ubuntu 24 ### Browser (if applicable) _No response_ ### Confirmation - [x] I have read and followed all instructions in `README.md`. - [x] I am using the latest version of **both** Open WebUI and Ollama. - [x] I have included the browser console logs. - [x] I have included the Docker container logs. - [x] I have **provided every relevant configuration, setting, and environment variable used in my setup.** - [x] I have clearly **listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup** (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc). - [x] I have documented **step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation**. My steps: - Start with the initial platform/version/OS and dependencies used, - Specify exact install/launch/configure commands, - List URLs visited, user input (incl. example values/emails/passwords if needed), - Describe all options and toggles enabled or changed, - Include any files or environmental changes, - Identify the expected and actual result at each stage, - Ensure any reasonably skilled user can follow and hit the same issue. ### Expected Behavior Migrations should be serialized (only one process performs migrations at a time). All workers should wait until migrations complete before continuing. ### Actual Behavior Occasionally, migrations run in parallel, causing DB structure failures (missing columns, errors on schema setup, etc.) as reported by users. This is not always reproducible but is strongly correlated with cases where the DB schema was not updated as expected. ### Steps to Reproduce 1. Deploy open-webui using Docker or another method that allows specifying multiple Uvicorn workers. 2. Start the application; allow migrations to run on startup. 3. Sometimes, errors will occur because migrations from multiple workers run simultaneously, leading to migration inconsistencies or failed DB updates. ### Logs & Screenshots sqlite3.OperationalError: duplicate column name: share_id ### Additional Information _No response_
GiteaMirror added the bug label 2026-05-05 21:32:09 -05:00
Author
Owner

@owui-terminator[bot] commented on GitHub (Dec 21, 2025):

🔍 Similar Issues Found

I found some existing issues that might be related to this one. Please check if any of these are duplicates or contain helpful solutions:

  1. #19864 issue:
    by Haervwe • Dec 10, 2025 • bug

  2. #20019 issue:
    by j63440490 • Dec 17, 2025 • bug

  3. #19777 issue:
    by Yaute7 • Dec 05, 2025 • bug

  4. #20046 issue:
    by pierrelouisbescond • Dec 19, 2025 • bug

  5. #19861 issue:
    by QuitHub • Dec 10, 2025 • bug

Show 5 more related issues
  1. #19877 issue:
    by dotmobo • Dec 11, 2025 • bug

  2. #18366 issue: multiple uvicorn workers do not update / refresh config from database
    by mglaubitz • Oct 16, 2025 • bug

  3. #19417 issue: v0.6.37 SQL Error
    by AKHYP • Nov 24, 2025 • bug

  4. #19563 issue:
    by naruto7g • Nov 28, 2025 • bug

  5. #19211 issue:
    by Byrnes9 • Nov 16, 2025 • bug


💡 Tips:

  • If this is a duplicate, please consider closing this issue and adding any additional details to the existing one
  • If you found a solution in any of these issues, please share it here to help others

This comment was generated automatically by a bot. Please react with a 👍 if this comment was helpful, or a 👎 if it was not.

<!-- gh-comment-id:3678576854 --> @owui-terminator[bot] commented on GitHub (Dec 21, 2025): 🔍 **Similar Issues Found** I found some existing issues that might be related to this one. Please check if any of these are duplicates or contain helpful solutions: 1. [#19864](https://github.com/open-webui/open-webui/issues/19864) **issue:** *by Haervwe • Dec 10, 2025 • `bug`* 2. [#20019](https://github.com/open-webui/open-webui/issues/20019) **issue:** *by j63440490 • Dec 17, 2025 • `bug`* 3. [#19777](https://github.com/open-webui/open-webui/issues/19777) **issue:** *by Yaute7 • Dec 05, 2025 • `bug`* 4. [#20046](https://github.com/open-webui/open-webui/issues/20046) **issue:** *by pierrelouisbescond • Dec 19, 2025 • `bug`* 5. [#19861](https://github.com/open-webui/open-webui/issues/19861) **issue:** *by QuitHub • Dec 10, 2025 • `bug`* <details> <summary>Show 5 more related issues</summary> 6. [#19877](https://github.com/open-webui/open-webui/issues/19877) **issue:** *by dotmobo • Dec 11, 2025 • `bug`* 7. [#18366](https://github.com/open-webui/open-webui/issues/18366) **issue: multiple uvicorn workers do not update / refresh config from database** *by mglaubitz • Oct 16, 2025 • `bug`* 8. [#19417](https://github.com/open-webui/open-webui/issues/19417) **issue: v0.6.37 SQL Error** *by AKHYP • Nov 24, 2025 • `bug`* 9. [#19563](https://github.com/open-webui/open-webui/issues/19563) **issue:** *by naruto7g • Nov 28, 2025 • `bug`* 10. [#19211](https://github.com/open-webui/open-webui/issues/19211) **issue:** *by Byrnes9 • Nov 16, 2025 • `bug`* </details> --- 💡 **Tips:** - If this is a duplicate, please consider closing this issue and adding any additional details to the existing one - If you found a solution in any of these issues, please share it here to help others *This comment was generated automatically by a bot.* Please react with a 👍 if this comment was helpful, or a 👎 if it was not.
Author
Owner

@OrenZhang commented on GitHub (Dec 21, 2025):

Suggestion:

create migrate.py and execute before worker start

# migrate.py

from open_webui.env import OPEN_WEBUI_DIR, log
from open_webui.internal.db import Session
from sqlalchemy import text


# Function to run the alembic migrations
def run_migrations():
    log.info("Running migrations")
    try:
        from alembic import command
        from alembic.config import Config

        alembic_cfg = Config(OPEN_WEBUI_DIR / "alembic.ini")

        # Set the script location dynamically
        migrations_path = OPEN_WEBUI_DIR / "migrations"
        alembic_cfg.set_main_option("script_location", str(migrations_path))

        command.upgrade(alembic_cfg, "head")
    except Exception as e:
        log.exception(f"Error running migrations: {e}")


if __name__ == "__main__":
    run_migrations()
# Migration
"$PYTHON_CMD" -m open_webui.migrate

# Run uvicorn
WEBUI_SECRET_KEY="$WEBUI_SECRET_KEY" exec "$PYTHON_CMD" -m uvicorn open_webui.main:app \
    --host "$HOST" \
    --port "$PORT" \
    --forwarded-allow-ips '*' \
    "${ARGS[@]}"
<!-- gh-comment-id:3678591437 --> @OrenZhang commented on GitHub (Dec 21, 2025): Suggestion: create migrate.py and execute before worker start ```python # migrate.py from open_webui.env import OPEN_WEBUI_DIR, log from open_webui.internal.db import Session from sqlalchemy import text # Function to run the alembic migrations def run_migrations(): log.info("Running migrations") try: from alembic import command from alembic.config import Config alembic_cfg = Config(OPEN_WEBUI_DIR / "alembic.ini") # Set the script location dynamically migrations_path = OPEN_WEBUI_DIR / "migrations" alembic_cfg.set_main_option("script_location", str(migrations_path)) command.upgrade(alembic_cfg, "head") except Exception as e: log.exception(f"Error running migrations: {e}") if __name__ == "__main__": run_migrations() ``` ```shell # Migration "$PYTHON_CMD" -m open_webui.migrate # Run uvicorn WEBUI_SECRET_KEY="$WEBUI_SECRET_KEY" exec "$PYTHON_CMD" -m uvicorn open_webui.main:app \ --host "$HOST" \ --port "$PORT" \ --forwarded-allow-ips '*' \ "${ARGS[@]}" ```
Author
Owner

@tjbck commented on GitHub (Dec 21, 2025):

@Classic298 our documentation needs to be updated here instead.

<!-- gh-comment-id:3678599649 --> @tjbck commented on GitHub (Dec 21, 2025): @Classic298 our documentation needs to be updated here instead.
Author
Owner

@Classic298 commented on GitHub (Dec 21, 2025):

on it

<!-- gh-comment-id:3678673830 --> @Classic298 commented on GitHub (Dec 21, 2025): on it
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#57742