[GH-ISSUE #21349] issue: upgrade to 0.8.0 can not start up #106446

Closed
opened 2026-05-18 04:48:57 -05:00 by GiteaMirror · 29 comments
Owner

Originally created by @hzr42strrs-hash on GitHub (Feb 13, 2026).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/21349

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.8.0

Ollama Version (if applicable)

No response

Operating System

Mac OS

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

ARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests.

██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║
╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝

v0.8.0 - building the best AI user interface.

https://github.com/open-webui/open-webui

INFO: Started server process [1]
INFO: Waiting for application startup.
2026-02-13 05:10:51.735 | INFO | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO
2026-02-13 05:10:51.735 | INFO | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools...
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: access_grant

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 694, in lifespan
async with self.lifespan_context(app) as maybe_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/main.py", line 616, in lifespan
install_tool_and_function_dependencies()
File "/app/backend/open_webui/utils/plugin.py", line 435, in install_tool_and_function_dependencies
tool_list = Tools.get_tools()
^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 165, in get_tools
**self._to_tool_model(tool, db=db).model_dump(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 105, in _to_tool_model
tool_data["access_grants"] = self._get_access_grants(tool_data["id"], db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 101, in _get_access_grants
return AccessGrants.get_grants_by_resource("tool", tool_id, db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/access_grants.py", line 455, in get_grants_by_resource
.all()
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2704, in all
return self._iter().all() # type: ignore
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2857, in _iter
result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2351, in execute
return self._execute_internal(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2249, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement
result = conn.execute(
^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
return meth(
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: access_grant
[SQL: SELECT access_grant.id AS access_grant_id, access_grant.resource_type AS access_grant_resource_type, access_grant.resource_id AS access_grant_resource_id, access_grant.principal_type AS access_grant_principal_type, access_grant.principal_id AS access_grant_principal_id, access_grant.permission AS access_grant_permission, access_grant.created_at AS access_grant_created_at
FROM access_grant
WHERE access_grant.resource_type = ? AND access_grant.resource_id = ?]
[parameters: ('tool', 'weather')]
(Background on this error at: https://sqlalche.me/e/20/e3q8)

Application startup failed. Exiting.

Actual Behavior

ARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests.

██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║
╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝

v0.8.0 - building the best AI user interface.

https://github.com/open-webui/open-webui

INFO: Started server process [1]
INFO: Waiting for application startup.
2026-02-13 05:10:51.735 | INFO | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO
2026-02-13 05:10:51.735 | INFO | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools...
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: access_grant

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 694, in lifespan
async with self.lifespan_context(app) as maybe_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/main.py", line 616, in lifespan
install_tool_and_function_dependencies()
File "/app/backend/open_webui/utils/plugin.py", line 435, in install_tool_and_function_dependencies
tool_list = Tools.get_tools()
^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 165, in get_tools
**self._to_tool_model(tool, db=db).model_dump(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 105, in _to_tool_model
tool_data["access_grants"] = self._get_access_grants(tool_data["id"], db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 101, in _get_access_grants
return AccessGrants.get_grants_by_resource("tool", tool_id, db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/access_grants.py", line 455, in get_grants_by_resource
.all()
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2704, in all
return self._iter().all() # type: ignore
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2857, in _iter
result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2351, in execute
return self._execute_internal(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2249, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement
result = conn.execute(
^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
return meth(
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: access_grant
[SQL: SELECT access_grant.id AS access_grant_id, access_grant.resource_type AS access_grant_resource_type, access_grant.resource_id AS access_grant_resource_id, access_grant.principal_type AS access_grant_principal_type, access_grant.principal_id AS access_grant_principal_id, access_grant.permission AS access_grant_permission, access_grant.created_at AS access_grant_created_at
FROM access_grant
WHERE access_grant.resource_type = ? AND access_grant.resource_id = ?]
[parameters: ('tool', 'weather')]
(Background on this error at: https://sqlalche.me/e/20/e3q8)

Application startup failed. Exiting.

Steps to Reproduce

read the update info
https://docs.openwebui.com/getting-started/updating/
and do it

then not very well

Logs & Screenshots

Image

Additional Information

No response

Originally created by @hzr42strrs-hash on GitHub (Feb 13, 2026). Original GitHub issue: https://github.com/open-webui/open-webui/issues/21349 ### 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.8.0 ### Ollama Version (if applicable) _No response_ ### Operating System Mac OS ### 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 ARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests. ██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗ ██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║ ██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║ ██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║ ╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝ v0.8.0 - building the best AI user interface. https://github.com/open-webui/open-webui INFO: Started server process [1] INFO: Waiting for application startup. 2026-02-13 05:10:51.735 | INFO | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO 2026-02-13 05:10:51.735 | INFO | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools... Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute cursor.execute(statement, parameters) sqlite3.OperationalError: no such table: access_grant The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 694, in lifespan async with self.lifespan_context(app) as maybe_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/main.py", line 616, in lifespan install_tool_and_function_dependencies() File "/app/backend/open_webui/utils/plugin.py", line 435, in install_tool_and_function_dependencies tool_list = Tools.get_tools() ^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/models/tools.py", line 165, in get_tools **self._to_tool_model(tool, db=db).model_dump(), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/models/tools.py", line 105, in _to_tool_model tool_data["access_grants"] = self._get_access_grants(tool_data["id"], db=db) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/models/tools.py", line 101, in _get_access_grants return AccessGrants.get_grants_by_resource("tool", tool_id, db=db) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/models/access_grants.py", line 455, in get_grants_by_resource .all() ^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2704, in all return self._iter().all() # type: ignore ^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2351, in execute return self._execute_internal( ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2249, in _execute_internal result: Result[Any] = compile_state_cls.orm_execute_statement( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement result = conn.execute( ^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute return meth( ^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection return connection._execute_clauseelement( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement ret = self._execute_context( ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context return self._exec_single_context( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: access_grant [SQL: SELECT access_grant.id AS access_grant_id, access_grant.resource_type AS access_grant_resource_type, access_grant.resource_id AS access_grant_resource_id, access_grant.principal_type AS access_grant_principal_type, access_grant.principal_id AS access_grant_principal_id, access_grant.permission AS access_grant_permission, access_grant.created_at AS access_grant_created_at FROM access_grant WHERE access_grant.resource_type = ? AND access_grant.resource_id = ?] [parameters: ('tool', 'weather')] (Background on this error at: https://sqlalche.me/e/20/e3q8) Application startup failed. Exiting. ### Actual Behavior ARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests. ██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗ ██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║ ██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║ ██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║ ╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝ v0.8.0 - building the best AI user interface. https://github.com/open-webui/open-webui INFO: Started server process [1] INFO: Waiting for application startup. 2026-02-13 05:10:51.735 | INFO | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO 2026-02-13 05:10:51.735 | INFO | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools... Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute cursor.execute(statement, parameters) sqlite3.OperationalError: no such table: access_grant The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 694, in lifespan async with self.lifespan_context(app) as maybe_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan async with original_context(app) as maybe_original_state: File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__ return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/main.py", line 616, in lifespan install_tool_and_function_dependencies() File "/app/backend/open_webui/utils/plugin.py", line 435, in install_tool_and_function_dependencies tool_list = Tools.get_tools() ^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/models/tools.py", line 165, in get_tools **self._to_tool_model(tool, db=db).model_dump(), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/models/tools.py", line 105, in _to_tool_model tool_data["access_grants"] = self._get_access_grants(tool_data["id"], db=db) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/models/tools.py", line 101, in _get_access_grants return AccessGrants.get_grants_by_resource("tool", tool_id, db=db) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/models/access_grants.py", line 455, in get_grants_by_resource .all() ^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2704, in all return self._iter().all() # type: ignore ^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2351, in execute return self._execute_internal( ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2249, in _execute_internal result: Result[Any] = compile_state_cls.orm_execute_statement( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement result = conn.execute( ^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute return meth( ^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection return connection._execute_clauseelement( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement ret = self._execute_context( ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context return self._exec_single_context( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: access_grant [SQL: SELECT access_grant.id AS access_grant_id, access_grant.resource_type AS access_grant_resource_type, access_grant.resource_id AS access_grant_resource_id, access_grant.principal_type AS access_grant_principal_type, access_grant.principal_id AS access_grant_principal_id, access_grant.permission AS access_grant_permission, access_grant.created_at AS access_grant_created_at FROM access_grant WHERE access_grant.resource_type = ? AND access_grant.resource_id = ?] [parameters: ('tool', 'weather')] (Background on this error at: https://sqlalche.me/e/20/e3q8) Application startup failed. Exiting. ### Steps to Reproduce read the update info https://docs.openwebui.com/getting-started/updating/ and do it then not very well ### Logs & Screenshots <img width="1438" height="647" alt="Image" src="https://github.com/user-attachments/assets/7c5e18fa-1d3a-4470-a211-29880c065d71" /> ### Additional Information _No response_
GiteaMirror added the bug label 2026-05-18 04:48:57 -05:00
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

No such table access grant

This is the error.

One of these things happened

  1. The table migrations legitimately did not apply during upgrade to you. Sometimes alembic may produce an error. Very rare but sure, could happen.
  2. You accidentally stopped the upgrade process while the migration was happening.
  3. You ran the upgrade on multiple workers simultaneously

In all scenarios: the fix is to apply the access grant migration manually
We have a docs page for that.

https://docs.openwebui.com/troubleshooting/multi-replica#updates-and-migrations

As already written in the release notes: the chat Message migration (which you might also be missing) takes a very long time to migrate.

But either way you have to manually apply the Migrations then it will work fine!

May need to apply the other Migrations also.

Apply access grant migration first, then start up again and see if you're missing more Migrations and apply them also if needed.

<!-- gh-comment-id:3895333766 --> @Classic298 commented on GitHub (Feb 13, 2026): No such table access grant This is the error. One of these things happened 1. The table migrations legitimately did not apply during upgrade to you. Sometimes alembic may produce an error. Very rare but sure, could happen. 2. You accidentally stopped the upgrade process while the migration was happening. 3. You ran the upgrade on multiple workers simultaneously In all scenarios: the fix is to apply the access grant migration manually We have a docs page for that. https://docs.openwebui.com/troubleshooting/multi-replica#updates-and-migrations As already written in the release notes: the chat Message migration (which you might also be missing) takes a very long time to migrate. But either way you have to manually apply the Migrations then it will work fine! May need to apply the other Migrations also. Apply access grant migration first, then start up again and see if you're missing more Migrations and apply them also if needed.
Author
Owner

@Joly0 commented on GitHub (Feb 13, 2026):

Hey, i am having the exact same issue and i cannot fix it. I am running owui on my docker swarm cluster but only one instance/replica, no multi-worker setup or anything else. Still yet owui keeps restarting and throwing that error over and over again.

I tried adding the "ENABLE_DB_MIGRATIONS=True" env variable to my compose, but even then it doesnt work. Just throws the same error again.

<!-- gh-comment-id:3895788664 --> @Joly0 commented on GitHub (Feb 13, 2026): Hey, i am having the exact same issue and i cannot fix it. I am running owui on my docker swarm cluster but only one instance/replica, no multi-worker setup or anything else. Still yet owui keeps restarting and throwing that error over and over again. I tried adding the "ENABLE_DB_MIGRATIONS=True" env variable to my compose, but even then it doesnt work. Just throws the same error again.
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

@Joly0
that env var will not migrate you - it only prevents that multiple workers all do the migration at the same time. You need to follow the troubleshooting guides for migration issues and manually migrate the missing alembic migrations

https://docs.openwebui.com/troubleshooting/manual-database-migration

<!-- gh-comment-id:3895805053 --> @Classic298 commented on GitHub (Feb 13, 2026): @Joly0 that env var will not migrate you - it only prevents that multiple workers all do the migration at the same time. You need to follow the troubleshooting guides for migration issues and manually migrate the missing alembic migrations https://docs.openwebui.com/troubleshooting/manual-database-migration
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

Updated this page a little bit - hopefully the added details help you out. Should be fairly easy to apply the missing migrations.

docs.openwebui.com/troubleshooting/manual-database-migration

<!-- gh-comment-id:3895877648 --> @Classic298 commented on GitHub (Feb 13, 2026): Updated this page a little bit - hopefully the added details help you out. Should be fairly easy to apply the missing migrations. [docs.openwebui.com/troubleshooting/manual-database-migration](https://docs.openwebui.com/troubleshooting/manual-database-migration)
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

Image

this

and this

https://docs.openwebui.com/troubleshooting/manual-database-migration/#no-such-table-errors

Image
<!-- gh-comment-id:3895884085 --> @Classic298 commented on GitHub (Feb 13, 2026): <img width="1412" height="937" alt="Image" src="https://github.com/user-attachments/assets/da5929dd-0e52-4467-8141-af2f23b6fa00" /> this and this https://docs.openwebui.com/troubleshooting/manual-database-migration/#no-such-table-errors <img width="900" height="1115" alt="Image" src="https://github.com/user-attachments/assets/b97a9e4f-939c-40bd-9b8d-64ab9f636faa" />
Author
Owner

@Joly0 commented on GitHub (Feb 13, 2026):

Does not work:

root@be65c577a5e9:/app/backend/open_webui# alembic upgrade head
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
    cursor.execute(statement, parameters)
sqlite3.OperationalError: table chat_message already exists

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/bin/alembic", line 10, in <module>
    sys.exit(main())
             ^^^^^^
  File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1047, in main
    CommandLine(prog=prog).main(argv=argv)
  File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1037, in main
    self.run_cmd(cfg, options)
  File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 971, in run_cmd
    fn(
  File "/usr/local/lib/python3.11/site-packages/alembic/command.py", line 483, in upgrade
    script.run_env()
  File "/usr/local/lib/python3.11/site-packages/alembic/script/base.py", line 545, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 116, in load_python_file
    module = load_module_py(module_id, path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 136, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/app/backend/open_webui/migrations/env.py", line 108, in <module>
    run_migrations_online()
  File "/app/backend/open_webui/migrations/env.py", line 102, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "/usr/local/lib/python3.11/site-packages/alembic/runtime/environment.py", line 969, in run_migrations
    self.get_context().run_migrations(**kw)
  File "/usr/local/lib/python3.11/site-packages/alembic/runtime/migration.py", line 626, in run_migrations
    step.migration_fn(**kw)
  File "/app/backend/open_webui/migrations/versions/8452d01d26d7_add_chat_message_table.py", line 27, in upgrade
    op.create_table(
  File "<string>", line 8, in create_table
  File "<string>", line 3, in create_table
  File "/usr/local/lib/python3.11/site-packages/alembic/operations/ops.py", line 1331, in create_table
    return operations.invoke(op)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/alembic/operations/base.py", line 452, in invoke
    return fn(self, operation)
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/alembic/operations/toimpl.py", line 140, in create_table
    operations.impl.create_table(table, **kw)
  File "/usr/local/lib/python3.11/site-packages/alembic/ddl/impl.py", line 440, in create_table
    self._exec(schema.CreateTable(table, **kw))
  File "/usr/local/lib/python3.11/site-packages/alembic/ddl/impl.py", line 256, in _exec
    return conn.execute(construct, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
    return meth(
           ^^^^^
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/ddl.py", line 187, in _execute_on_connection
    return connection._execute_ddl(
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1530, in _execute_ddl
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table chat_message already exists
[SQL:
CREATE TABLE chat_message (
        id TEXT NOT NULL,
        chat_id TEXT NOT NULL,
        user_id TEXT,
        role TEXT NOT NULL,
        parent_id TEXT,
        content JSON,
        output JSON,
        model_id TEXT,
        files JSON,
        sources JSON,
        embeds JSON,
        done BOOLEAN,
        status_history JSON,
        error JSON,
        usage JSON,
        created_at BIGINT,
        updated_at BIGINT,
        PRIMARY KEY (id),
        FOREIGN KEY(chat_id) REFERENCES chat (id) ON DELETE CASCADE
)

]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
root@be65c577a5e9:/app/backend/open_webui#

Before that i ran the other alembic commands that are on that docs page and there is the other alembic command that also shows various errors:

root@be65c577a5e9:/app/backend/open_webui# alembic upgrade head --sql | head -30
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Generating static SQL
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
CREATE TABLE alembic_version (
    version_num VARCHAR(32) NOT NULL,
    CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
);

INFO  [alembic.runtime.migration] Running upgrade  -> 7e5b5dc7342b, init
-- Running upgrade  -> 7e5b5dc7342b

Traceback (most recent call last):
  File "/usr/local/bin/alembic", line 10, in <module>
    sys.exit(main())
             ^^^^^^
  File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1047, in main
    CommandLine(prog=prog).main(argv=argv)
  File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1037, in main
    self.run_cmd(cfg, options)
  File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 971, in run_cmd
    fn(
  File "/usr/local/lib/python3.11/site-packages/alembic/command.py", line 483, in upgrade
    script.run_env()
  File "/usr/local/lib/python3.11/site-packages/alembic/script/base.py", line 545, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 116, in load_python_file
    module = load_module_py(module_id, path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 136, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/app/backend/open_webui/migrations/env.py", line 106, in <module>
    run_migrations_offline()
  File "/app/backend/open_webui/migrations/env.py", line 55, in run_migrations_offline
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "/usr/local/lib/python3.11/site-packages/alembic/runtime/environment.py", line 969, in run_migrations
    self.get_context().run_migrations(**kw)
  File "/usr/local/lib/python3.11/site-packages/alembic/runtime/migration.py", line 626, in run_migrations
    step.migration_fn(**kw)
  File "/app/backend/open_webui/migrations/versions/7e5b5dc7342b_init.py", line 26, in upgrade
    existing_tables = set(get_existing_tables())
                          ^^^^^^^^^^^^^^^^^^^^^
  File "/app/backend/open_webui/../open_webui/migrations/util.py", line 7, in get_existing_tables
    inspector = Inspector.from_engine(con)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in from_engine
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/util/deprecations.py", line 386, in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 309, in from_engine
    return cls._construct(cls._init_legacy, bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 246, in _construct
    init(self, bind)
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 253, in _init_legacy
    self._init_engine(bind)
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 257, in _init_engine
    engine.connect().close()
    ^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'MockConnection' object has no attribute 'close'

This is, as i said, running as docker and on sqlite3 database. I created a backup of the db and verified it is correct.

<!-- gh-comment-id:3895921395 --> @Joly0 commented on GitHub (Feb 13, 2026): Does not work: ``` root@be65c577a5e9:/app/backend/open_webui# alembic upgrade head INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute cursor.execute(statement, parameters) sqlite3.OperationalError: table chat_message already exists The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/local/bin/alembic", line 10, in <module> sys.exit(main()) ^^^^^^ File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1047, in main CommandLine(prog=prog).main(argv=argv) File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1037, in main self.run_cmd(cfg, options) File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 971, in run_cmd fn( File "/usr/local/lib/python3.11/site-packages/alembic/command.py", line 483, in upgrade script.run_env() File "/usr/local/lib/python3.11/site-packages/alembic/script/base.py", line 545, in run_env util.load_python_file(self.dir, "env.py") File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 116, in load_python_file module = load_module_py(module_id, path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 136, in load_module_py spec.loader.exec_module(module) # type: ignore ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap_external>", line 940, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/app/backend/open_webui/migrations/env.py", line 108, in <module> run_migrations_online() File "/app/backend/open_webui/migrations/env.py", line 102, in run_migrations_online context.run_migrations() File "<string>", line 8, in run_migrations File "/usr/local/lib/python3.11/site-packages/alembic/runtime/environment.py", line 969, in run_migrations self.get_context().run_migrations(**kw) File "/usr/local/lib/python3.11/site-packages/alembic/runtime/migration.py", line 626, in run_migrations step.migration_fn(**kw) File "/app/backend/open_webui/migrations/versions/8452d01d26d7_add_chat_message_table.py", line 27, in upgrade op.create_table( File "<string>", line 8, in create_table File "<string>", line 3, in create_table File "/usr/local/lib/python3.11/site-packages/alembic/operations/ops.py", line 1331, in create_table return operations.invoke(op) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/alembic/operations/base.py", line 452, in invoke return fn(self, operation) ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/alembic/operations/toimpl.py", line 140, in create_table operations.impl.create_table(table, **kw) File "/usr/local/lib/python3.11/site-packages/alembic/ddl/impl.py", line 440, in create_table self._exec(schema.CreateTable(table, **kw)) File "/usr/local/lib/python3.11/site-packages/alembic/ddl/impl.py", line 256, in _exec return conn.execute(construct, params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute return meth( ^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/ddl.py", line 187, in _execute_on_connection return connection._execute_ddl( ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1530, in _execute_ddl ret = self._execute_context( ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context return self._exec_single_context( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table chat_message already exists [SQL: CREATE TABLE chat_message ( id TEXT NOT NULL, chat_id TEXT NOT NULL, user_id TEXT, role TEXT NOT NULL, parent_id TEXT, content JSON, output JSON, model_id TEXT, files JSON, sources JSON, embeds JSON, done BOOLEAN, status_history JSON, error JSON, usage JSON, created_at BIGINT, updated_at BIGINT, PRIMARY KEY (id), FOREIGN KEY(chat_id) REFERENCES chat (id) ON DELETE CASCADE ) ] (Background on this error at: https://sqlalche.me/e/20/e3q8) root@be65c577a5e9:/app/backend/open_webui# ``` Before that i ran the other alembic commands that are on that docs page and there is the other alembic command that also shows various errors: ``` root@be65c577a5e9:/app/backend/open_webui# alembic upgrade head --sql | head -30 INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Generating static SQL INFO [alembic.runtime.migration] Will assume non-transactional DDL. CREATE TABLE alembic_version ( version_num VARCHAR(32) NOT NULL, CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num) ); INFO [alembic.runtime.migration] Running upgrade -> 7e5b5dc7342b, init -- Running upgrade -> 7e5b5dc7342b Traceback (most recent call last): File "/usr/local/bin/alembic", line 10, in <module> sys.exit(main()) ^^^^^^ File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1047, in main CommandLine(prog=prog).main(argv=argv) File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1037, in main self.run_cmd(cfg, options) File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 971, in run_cmd fn( File "/usr/local/lib/python3.11/site-packages/alembic/command.py", line 483, in upgrade script.run_env() File "/usr/local/lib/python3.11/site-packages/alembic/script/base.py", line 545, in run_env util.load_python_file(self.dir, "env.py") File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 116, in load_python_file module = load_module_py(module_id, path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 136, in load_module_py spec.loader.exec_module(module) # type: ignore ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap_external>", line 940, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/app/backend/open_webui/migrations/env.py", line 106, in <module> run_migrations_offline() File "/app/backend/open_webui/migrations/env.py", line 55, in run_migrations_offline context.run_migrations() File "<string>", line 8, in run_migrations File "/usr/local/lib/python3.11/site-packages/alembic/runtime/environment.py", line 969, in run_migrations self.get_context().run_migrations(**kw) File "/usr/local/lib/python3.11/site-packages/alembic/runtime/migration.py", line 626, in run_migrations step.migration_fn(**kw) File "/app/backend/open_webui/migrations/versions/7e5b5dc7342b_init.py", line 26, in upgrade existing_tables = set(get_existing_tables()) ^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/../open_webui/migrations/util.py", line 7, in get_existing_tables inspector = Inspector.from_engine(con) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<string>", line 2, in from_engine File "/usr/local/lib/python3.11/site-packages/sqlalchemy/util/deprecations.py", line 386, in warned return fn(*args, **kwargs) # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 309, in from_engine return cls._construct(cls._init_legacy, bind) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 246, in _construct init(self, bind) File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 253, in _init_legacy self._init_engine(bind) File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 257, in _init_engine engine.connect().close() ^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'MockConnection' object has no attribute 'close' ``` This is, as i said, running as docker and on sqlite3 database. I created a backup of the db and verified it is correct.
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

updating docs..

<!-- gh-comment-id:3895959361 --> @Classic298 commented on GitHub (Feb 13, 2026): updating docs..
Author
Owner
<!-- gh-comment-id:3895986410 --> @Classic298 commented on GitHub (Feb 13, 2026): @Joly0 https://docs.openwebui.com/troubleshooting/manual-database-migration/#table-already-exists-errors
Author
Owner

@Joly0 commented on GitHub (Feb 13, 2026):

Ok, seems to have worked:

root@be65c577a5e9:/app/backend/open_webui# alembic current
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
374d2f66af06
root@be65c577a5e9:/app/backend/open_webui# alembic history
f1e2d3c4b5a6 -> a1b2c3d4e5f6 (head), Add skill table
8452d01d26d7 -> f1e2d3c4b5a6, Add access_grant table
374d2f66af06 -> 8452d01d26d7, Add chat_message table
c440947495f3 -> 374d2f66af06, Add prompt history table
81cc2ce44d79 -> c440947495f3, Add chat_file table
6283dc0e4d8d -> 81cc2ce44d79, Update channel file and knowledge table
3e0e00844bb0 -> 6283dc0e4d8d, Add channel file table
90ef40d4714e -> 3e0e00844bb0, Add knowledge_file table
b10670c03dd5 -> 90ef40d4714e, Update channel and channel members table
2f1211949ecc -> b10670c03dd5, Update user table
37f288994c47 -> 2f1211949ecc, Update messages and channel member table
a5c220713937 -> 37f288994c47, add_group_member_table
38d63c18f30f -> a5c220713937, Add reply_to_id column to message
3af16a1c9fb6 -> 38d63c18f30f, Add oauth_session table
018012973d35 -> 3af16a1c9fb6, update user table
d31026856c01 -> 018012973d35, Add indexes
9f0c9cd09105 -> d31026856c01, Update folder table data
3781e22d8b01 -> 9f0c9cd09105, Add note table
7826ab40b532 -> 3781e22d8b01, 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
root@be65c577a5e9:/app/backend/open_webui# alembic stamp 8452d01d26d7
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running stamp_revision 374d2f66af06 -> 8452d01d26d7
root@be65c577a5e9:/app/backend/open_webui# alembic current
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
8452d01d26d7
root@be65c577a5e9:/app/backend/open_webui# alembic upgrade head
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade 8452d01d26d7 -> f1e2d3c4b5a6, Add access_grant table
INFO  [alembic.runtime.migration] Running upgrade f1e2d3c4b5a6 -> a1b2c3d4e5f6, Add skill table
root@be65c577a5e9:/app/backend/open_webui#

Any idea how this could have happened that the migration was stuck on an older version yet the table that the migration should add was already added?

<!-- gh-comment-id:3896008826 --> @Joly0 commented on GitHub (Feb 13, 2026): Ok, seems to have worked: ``` root@be65c577a5e9:/app/backend/open_webui# alembic current INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. 374d2f66af06 root@be65c577a5e9:/app/backend/open_webui# alembic history f1e2d3c4b5a6 -> a1b2c3d4e5f6 (head), Add skill table 8452d01d26d7 -> f1e2d3c4b5a6, Add access_grant table 374d2f66af06 -> 8452d01d26d7, Add chat_message table c440947495f3 -> 374d2f66af06, Add prompt history table 81cc2ce44d79 -> c440947495f3, Add chat_file table 6283dc0e4d8d -> 81cc2ce44d79, Update channel file and knowledge table 3e0e00844bb0 -> 6283dc0e4d8d, Add channel file table 90ef40d4714e -> 3e0e00844bb0, Add knowledge_file table b10670c03dd5 -> 90ef40d4714e, Update channel and channel members table 2f1211949ecc -> b10670c03dd5, Update user table 37f288994c47 -> 2f1211949ecc, Update messages and channel member table a5c220713937 -> 37f288994c47, add_group_member_table 38d63c18f30f -> a5c220713937, Add reply_to_id column to message 3af16a1c9fb6 -> 38d63c18f30f, Add oauth_session table 018012973d35 -> 3af16a1c9fb6, update user table d31026856c01 -> 018012973d35, Add indexes 9f0c9cd09105 -> d31026856c01, Update folder table data 3781e22d8b01 -> 9f0c9cd09105, Add note table 7826ab40b532 -> 3781e22d8b01, 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 root@be65c577a5e9:/app/backend/open_webui# alembic stamp 8452d01d26d7 INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running stamp_revision 374d2f66af06 -> 8452d01d26d7 root@be65c577a5e9:/app/backend/open_webui# alembic current INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. 8452d01d26d7 root@be65c577a5e9:/app/backend/open_webui# alembic upgrade head INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade 8452d01d26d7 -> f1e2d3c4b5a6, Add access_grant table INFO [alembic.runtime.migration] Running upgrade f1e2d3c4b5a6 -> a1b2c3d4e5f6, Add skill table root@be65c577a5e9:/app/backend/open_webui# ``` Any idea how this could have happened that the migration was stuck on an older version yet the table that the migration should add was already added?
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

@Joly0
any of the three reasons i have given above

alembic had an issue during v0.8.0 installation or you accidentally ended open webui during migration or clustered setup...

in 99%+ of cases it will just work fine and run through automatically

<!-- gh-comment-id:3896014504 --> @Classic298 commented on GitHub (Feb 13, 2026): @Joly0 any of the three reasons i have given above alembic had an issue during v0.8.0 installation or you accidentally ended open webui during migration or clustered setup... in 99%+ of cases it will just work fine and run through automatically
Author
Owner

@Joly0 commented on GitHub (Feb 13, 2026):

Ok, as for myself i can rule out multi-worker setup, as we dont use that and i also can rule out stopping owui mid-migration,s o i guess alembic just for some reason had a problem.
Whatever it was, owui seems to be running fine now on 0.8.0.
Thanks for the quick support, appreciate it :)

<!-- gh-comment-id:3896056364 --> @Joly0 commented on GitHub (Feb 13, 2026): Ok, as for myself i can rule out multi-worker setup, as we dont use that and i also can rule out stopping owui mid-migration,s o i guess alembic just for some reason had a problem. Whatever it was, owui seems to be running fine now on 0.8.0. Thanks for the quick support, appreciate it :)
Author
Owner

@itsHenry35 commented on GitHub (Feb 13, 2026):

Met exact same issue :D
Docker and sqlite

<!-- gh-comment-id:3896103913 --> @itsHenry35 commented on GitHub (Feb 13, 2026): Met exact same issue :D Docker and sqlite
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

@itsHenry35 troubleshooting as above

will keep the issue open for now just so people can see it. will close it later, as not an open webui issue.

<!-- gh-comment-id:3896136082 --> @Classic298 commented on GitHub (Feb 13, 2026): @itsHenry35 troubleshooting as above will keep the issue open for now just so people can see it. will close it later, as not an open webui issue.
Author
Owner

@itsHenry35 commented on GitHub (Feb 13, 2026):

@itsHenry35 troubleshooting as above

will keep the issue open for now just so people can see it. will close it later, as not an open webui issue.

Thanks, but I think it might be an open webui issue. Single Worker setup, never stopped or restarted the container while updating, it just fails. But thankfully, database migration works after i followed that docs.

root@f240826847e0:/app/backend/open_webui# alembic upgrade head
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
    cursor.execute(statement, parameters)
sqlite3.OperationalError: table chat_message already exists
<!-- gh-comment-id:3896299885 --> @itsHenry35 commented on GitHub (Feb 13, 2026): > [@itsHenry35](https://github.com/itsHenry35) troubleshooting as above > > will keep the issue open for now just so people can see it. will close it later, as not an open webui issue. Thanks, but I think it might be an open webui issue. Single Worker setup, never stopped or restarted the container while updating, it just fails. But thankfully, database migration works after i followed that docs. ``` root@f240826847e0:/app/backend/open_webui# alembic upgrade head INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute cursor.execute(statement, parameters) sqlite3.OperationalError: table chat_message already exists ```
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

@itsHenry35 maybe the worker timed out or you went OOM

the chat message table is a very long migration, can take a long time.

And no, not an open-webui issue - as it is not something we can really fix or control. It is a normal migration. If the migration fails for whatever reason that is outside of our control - then it's not something we can fix.

if alembic doesnt complete, the troubleshooting has your back

<!-- gh-comment-id:3896321441 --> @Classic298 commented on GitHub (Feb 13, 2026): @itsHenry35 maybe the worker timed out or you went OOM the chat message table is a very long migration, can take a long time. And no, not an open-webui issue - as it is not something we can really fix or control. It is a normal migration. If the migration fails for whatever reason that is outside of our control - then it's not something we can fix. if alembic doesnt complete, the troubleshooting has your back
Author
Owner

@themethod commented on GitHub (Feb 13, 2026):

Same issue. The container restarted while Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table.

I performed a rollback alembic downgrade -1 and then alembic upgrade head.

Unfortunately there were a number of additional indexes that migration creates and the down-migration didn't remove, so I had to identify and manually drop those, and the chat_message table. Following that process I was able to successfully complete the upgrade.

NOTE: If you care about your chat messages, DO NOT run alembic stamp ... to skip the failed migration, you will lose data.

<!-- gh-comment-id:3898098011 --> @themethod commented on GitHub (Feb 13, 2026): Same issue. The container restarted while `Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table`. I performed a rollback `alembic downgrade -1` and then `alembic upgrade head`. Unfortunately there were a number of additional indexes that migration creates and the down-migration didn't remove, so I had to identify and manually drop those, and the chat_message table. Following that process I was able to successfully complete the upgrade. NOTE: If you care about your chat messages, DO NOT run `alembic stamp ...` to skip the failed migration, you will lose data.
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

Just to note: I just performed an upgrade on our prod instance (thousands of users)

chat_message migration took 3-4 minutes (as the warning in the release notes warns about) but completed just fine and all other migrations also worked just fine and applied smoothly without issues.

If you are hitting any issues, you were unfortunately unlucky with alembic, or something or someone stopped the migration. Either an accidental cancel, or running out of memory? If anything kills the process during the migration, then you'll end up in that situation.

The container restarted

@themethod and why did it restart?
do you have any logs?
did your machine possibly kill it due to it going OOM?

the chat_message migration can take up some resources.

<!-- gh-comment-id:3898127423 --> @Classic298 commented on GitHub (Feb 13, 2026): Just to note: I just performed an upgrade on our prod instance (thousands of users) chat_message migration took 3-4 minutes (as the warning in the release notes warns about) but completed just fine and all other migrations also worked just fine and applied smoothly without issues. If you are hitting any issues, you were unfortunately unlucky with alembic, or something or someone stopped the migration. Either an accidental cancel, or running out of memory? If anything kills the process during the migration, then you'll end up in that situation. > The container restarted @themethod and why did it restart? do you have any logs? did your machine possibly kill it due to it going OOM? the chat_message migration can take up some resources.
Author
Owner

@olegbilovus commented on GitHub (Feb 13, 2026):

@Joly0
that env var will not migrate you - it only prevents that multiple workers all do the migration at the same time. You need to follow the troubleshooting guides for migration issues and manually migrate the missing alembic migrations

https://docs.openwebui.com/troubleshooting/manual-database-migration

On a Raspberry Pi 4B 8GB RAM it crashes. I also tried to start a fresh new container and v8 would just crash after a few seconds.

These are the logs.

sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest
root@b923acb1ddbd:/app/backend# pwd
/app/backend
root@b923acb1ddbd:/app/backend# cd open_webui/
root@b923acb1ddbd:/app/backend/open_webui# ls
__init__.py   data          main.py     routers  tasks.py
alembic.ini   env.py        migrations  socket   test
config.py     functions.py  models      static   tools
constants.py  internal      retrieval   storage  utils
root@b923acb1ddbd:/app/backend/open_webui# ls -la alembic.ini
-rw-r--r-- 1 root root 3494 Feb 12 23:42 alembic.ini
root@b923acb1ddbd:/app/backend/open_webui# export DATABASE_URL="sqlite:////app/backend/data/webui.db"
root@b923acb1ddbd:/app/backend/open_webui# export DATABASE_URL="postgresql://user:password@localhost:5432/open_webui_db"
root@b923acb1ddbd:/app/backend/open_webui# cat /app/backend/.webui_secret_key
cat: /app/backend/.webui_secret_key: No such file or directory
root@b923acb1ddbd:/app/backend/open_webui# cat /app/backend/data/.webui_secret_key
cat: /app/backend/data/.webui_secret_key: No such file or directory
root@b923acb1ddbd:/app/backend/open_webui# export WEBUI_SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_hex(32))")
root@b923acb1ddbd:/app/backend/open_webui# echo $WEBUI_SECRET_KEY > /app/backend/.webui_secret_key
root@b923acb1ddbd:/app/backend/open_webui# echo "DATABASE_URL: $DATABASE_URL"
DATABASE_URL: postgresql://user:password@localhost:5432/open_webui_db
root@b923acb1ddbd:/app/backend/open_webui# echo "WEBUI_SECRET_KEY: ${WEBUI_SECRET_KEY:0:10}..."
WEBUI_SECRET_KEY: 8fa622fcdc...
root@b923acb1ddbd:/app/backend/open_webui#
root@b923acb1ddbd:/app/backend/open_webui# alembic current -v
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui# alembic heads
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui# alembic history
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui# alembic upgrade head --sql | head -30
root@b923acb1ddbd:/app/backend/open_webui# alembic branches
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui# alembic downgrade -1
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui#
exit
<!-- gh-comment-id:3898342577 --> @olegbilovus commented on GitHub (Feb 13, 2026): > @Joly0 > that env var will not migrate you - it only prevents that multiple workers all do the migration at the same time. You need to follow the troubleshooting guides for migration issues and manually migrate the missing alembic migrations > > https://docs.openwebui.com/troubleshooting/manual-database-migration On a Raspberry Pi 4B 8GB RAM it crashes. I also tried to start a fresh new container and v8 would just crash after a few seconds. These are the logs. ``` sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest root@b923acb1ddbd:/app/backend# pwd /app/backend root@b923acb1ddbd:/app/backend# cd open_webui/ root@b923acb1ddbd:/app/backend/open_webui# ls __init__.py data main.py routers tasks.py alembic.ini env.py migrations socket test config.py functions.py models static tools constants.py internal retrieval storage utils root@b923acb1ddbd:/app/backend/open_webui# ls -la alembic.ini -rw-r--r-- 1 root root 3494 Feb 12 23:42 alembic.ini root@b923acb1ddbd:/app/backend/open_webui# export DATABASE_URL="sqlite:////app/backend/data/webui.db" root@b923acb1ddbd:/app/backend/open_webui# export DATABASE_URL="postgresql://user:password@localhost:5432/open_webui_db" root@b923acb1ddbd:/app/backend/open_webui# cat /app/backend/.webui_secret_key cat: /app/backend/.webui_secret_key: No such file or directory root@b923acb1ddbd:/app/backend/open_webui# cat /app/backend/data/.webui_secret_key cat: /app/backend/data/.webui_secret_key: No such file or directory root@b923acb1ddbd:/app/backend/open_webui# export WEBUI_SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_hex(32))") root@b923acb1ddbd:/app/backend/open_webui# echo $WEBUI_SECRET_KEY > /app/backend/.webui_secret_key root@b923acb1ddbd:/app/backend/open_webui# echo "DATABASE_URL: $DATABASE_URL" DATABASE_URL: postgresql://user:password@localhost:5432/open_webui_db root@b923acb1ddbd:/app/backend/open_webui# echo "WEBUI_SECRET_KEY: ${WEBUI_SECRET_KEY:0:10}..." WEBUI_SECRET_KEY: 8fa622fcdc... root@b923acb1ddbd:/app/backend/open_webui# root@b923acb1ddbd:/app/backend/open_webui# alembic current -v Illegal instruction (core dumped) root@b923acb1ddbd:/app/backend/open_webui# alembic heads Illegal instruction (core dumped) root@b923acb1ddbd:/app/backend/open_webui# alembic history Illegal instruction (core dumped) root@b923acb1ddbd:/app/backend/open_webui# alembic upgrade head --sql | head -30 root@b923acb1ddbd:/app/backend/open_webui# alembic branches Illegal instruction (core dumped) root@b923acb1ddbd:/app/backend/open_webui# alembic downgrade -1 Illegal instruction (core dumped) root@b923acb1ddbd:/app/backend/open_webui# exit ```
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

@olegbilovus by any chance, are you running OOM? Any other logs you can give us?

<!-- gh-comment-id:3898360062 --> @Classic298 commented on GitHub (Feb 13, 2026): @olegbilovus by any chance, are you running OOM? Any other logs you can give us?
Author
Owner

@olegbilovus commented on GitHub (Feb 13, 2026):

@olegbilovus by any chance, are you running OOM? Any other logs you can give us?

Memory is fine, I have more than half of it free and have been running openwebui for almost 6 month. I do not use Ollama locally but OpenAI API.

I downgrade to v0.7.2 and it works fine.

If I try to run v0.8 it gives me error 132. This is what I get in the terminal:

sudo docker run --rm -it -v .:/app/backend/data -p 8011:8080  ghcr.io/open-webui/open-webui:latest
Loading WEBUI_SECRET_KEY from file, not provided as an environment variable.
Generating WEBUI_SECRET_KEY
Loading WEBUI_SECRET_KEY from .webui_secret_key

If I run echo $? it gives me 132.

This is my docker-compose:

services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:latest
    container_name: open-webui
    volumes:
      - /path/to/data/folder:/app/backend/data
    # ports:
    #   - 8011:8080
    networks:
      - open-webui
    restart: always
    healthcheck:
      test:
        - CMD
        - curl
        - -f
        - http://localhost:8080/health
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
    environment:
      - WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
      - ENABLE_SIGNUP=false
      - ENABLE_OLLAMA_API=false
      - ENABLE_CODE_EXECUTION=false
      - ENABLE_CODE_INTERPRETER=false
networks:
  open-webui:
    name: open-webui

If there are specific flags or env vars I can add for a more verbose logs, let me know amd I can share the logs.

<!-- gh-comment-id:3898415499 --> @olegbilovus commented on GitHub (Feb 13, 2026): > @olegbilovus by any chance, are you running OOM? Any other logs you can give us? Memory is fine, I have more than half of it free and have been running openwebui for almost 6 month. I do not use Ollama locally but OpenAI API. I downgrade to v0.7.2 and it works fine. If I try to run v0.8 it gives me error 132. This is what I get in the terminal: ``` sudo docker run --rm -it -v .:/app/backend/data -p 8011:8080 ghcr.io/open-webui/open-webui:latest Loading WEBUI_SECRET_KEY from file, not provided as an environment variable. Generating WEBUI_SECRET_KEY Loading WEBUI_SECRET_KEY from .webui_secret_key ``` If I run `echo $?` it gives me `132`. This is my docker-compose: ``` services: open-webui: image: ghcr.io/open-webui/open-webui:latest container_name: open-webui volumes: - /path/to/data/folder:/app/backend/data # ports: # - 8011:8080 networks: - open-webui restart: always healthcheck: test: - CMD - curl - -f - http://localhost:8080/health interval: 30s timeout: 10s retries: 3 start_period: 40s environment: - WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY} - ENABLE_SIGNUP=false - ENABLE_OLLAMA_API=false - ENABLE_CODE_EXECUTION=false - ENABLE_CODE_INTERPRETER=false networks: open-webui: name: open-webui ``` If there are specific flags or env vars I can add for a more verbose logs, let me know amd I can share the logs.
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

@olegbilovus This is not a migration issue like the other people here in the thread were posting - your problem is an ARM CPU instruction incompatibility.

Exit code 132 = SIGILL (Illegal Instruction). This means a native binary dependency in v0.8.0 is compiled with ARM extensions that your Raspberry Pi 4's Cortex-A72 processor doesn't support.

This has happened before with Open WebUI on Raspberry Pi - onnxruntime is the most common culprit. v0.8.0 ships nnxruntime==1.24.1, and the pre-built aarch64 wheels on PyPI often include FP16/ARMv8.2-A instructions that the RPi 4 (ARMv8.0-A) can't execute.

To confirm this diagnosis, you can run inside the container:
python3 -c "import onnxruntime"

If that crashes with "Illegal instruction", that's your culprit.

As a workaround, you can try:

  1. Enter the container: docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest
  2. Downgrade onnxruntime: pip install onnxruntime==1.20.1
  3. Then try starting Open WebUI

If onnxruntime isn't the sole offender, other candidates to check the same way are chromadb and opencv-python-headless.

This is a known limitation of running on Raspberry Pi — native binary packages sometimes use newer ARM instruction sets than what the RPi 4 supports.

<!-- gh-comment-id:3898450205 --> @Classic298 commented on GitHub (Feb 13, 2026): @olegbilovus This is not a migration issue like the other people here in the thread were posting - your problem is an ARM CPU instruction incompatibility. Exit code 132 = SIGILL (Illegal Instruction). This means a native binary dependency in v0.8.0 is compiled with ARM extensions that your Raspberry Pi 4's Cortex-A72 processor doesn't support. This has happened before with Open WebUI on Raspberry Pi - onnxruntime is the most common culprit. v0.8.0 ships nnxruntime==1.24.1, and the pre-built aarch64 wheels on PyPI often include FP16/ARMv8.2-A instructions that the RPi 4 (ARMv8.0-A) can't execute. To confirm this diagnosis, you can run inside the container: `python3 -c "import onnxruntime"` If that crashes with "Illegal instruction", that's your culprit. As a workaround, you can try: 1. Enter the container: docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest 2. Downgrade onnxruntime: pip install onnxruntime==1.20.1 3. Then try starting Open WebUI If onnxruntime isn't the sole offender, other candidates to check the same way are chromadb and opencv-python-headless. This is a known limitation of running on Raspberry Pi — native binary packages sometimes use newer ARM instruction sets than what the RPi 4 supports.
Author
Owner

@olegbilovus commented on GitHub (Feb 13, 2026):

@Classic298

Running python3 -c "import onnxruntime" it shows this:

root@7f3029a0b4a5:/app/backend# python3 -c "import onnxruntime"
2026-02-13 17:39:28.632075326 [W:onnxruntime:Default, device_discovery.cc:211 DiscoverDevicesForPlatform] GPU device discovery failed: device_discovery.cc:91 ReadFileContents Failed to open file: "/sys/class/drm/card1/device/vendor"
<!-- gh-comment-id:3898465521 --> @olegbilovus commented on GitHub (Feb 13, 2026): @Classic298 Running `python3 -c "import onnxruntime"` it shows this: ``` root@7f3029a0b4a5:/app/backend# python3 -c "import onnxruntime" 2026-02-13 17:39:28.632075326 [W:onnxruntime:Default, device_discovery.cc:211 DiscoverDevicesForPlatform] GPU device discovery failed: device_discovery.cc:91 ReadFileContents Failed to open file: "/sys/class/drm/card1/device/vendor" ```
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

@olegbilovus Thanks for confirming, that rules out onnxruntime.

Exit code 132 = SIGILL (Illegal Instruction), meaning a native binary dependency is using CPU instructions your Raspberry Pi 4's Cortex-A72 (ARMv8.0-A) doesn't support. This is NOT a migration issue, it's a binary compatibility problem.

Since you can bash into the container, could you run these one at a time to find which import crashes?

python3 -c "import torch"
python3 -c "import cv2"
python3 -c "import chromadb"
python3 -c "import sentence_transformers"
python3 -c "import numpy"
python3 -c "import cryptography"
python3 -c "import rapidocr_onnxruntime"
python3 -c "import pyarrow"
python3 -c "from open_webui.env import DATABASE_URL"

Whichever one crashes with "Illegal instruction" is the culprit. This will help us narrow down which specific package needs a version pin for ARM compatibility (similar to how pyarrow was pinned to 20.0.0 for RPi in the past).

The full list to try if all of the above worked: https://github.com/open-webui/open-webui/pull/21261/changes

<!-- gh-comment-id:3898481075 --> @Classic298 commented on GitHub (Feb 13, 2026): @olegbilovus Thanks for confirming, that rules out onnxruntime. Exit code 132 = SIGILL (Illegal Instruction), meaning a native binary dependency is using CPU instructions your Raspberry Pi 4's Cortex-A72 (ARMv8.0-A) doesn't support. This is NOT a migration issue, it's a binary compatibility problem. Since you can bash into the container, could you run these one at a time to find which import crashes? python3 -c "import torch" python3 -c "import cv2" python3 -c "import chromadb" python3 -c "import sentence_transformers" python3 -c "import numpy" python3 -c "import cryptography" python3 -c "import rapidocr_onnxruntime" python3 -c "import pyarrow" python3 -c "from open_webui.env import DATABASE_URL" Whichever one crashes with "Illegal instruction" is the culprit. This will help us narrow down which specific package needs a version pin for ARM compatibility (similar to how pyarrow was pinned to 20.0.0 for RPi in the past). The full list to try if all of the above worked: https://github.com/open-webui/open-webui/pull/21261/changes
Author
Owner

@olegbilovus commented on GitHub (Feb 13, 2026):

@Classic298 There are a few that fails:

sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest
root@26cc2becab27:/app/backend# python3 -c "import torch"
Illegal instruction (core dumped)
root@26cc2becab27:/app/backend# python3 -c "import cv2"
root@26cc2becab27:/app/backend# python3 -c "import chromadb"
root@26cc2becab27:/app/backend# python3 -c "import sentence_transformers"
Illegal instruction (core dumped)
root@26cc2becab27:/app/backend# python3 -c "import numpy"
root@26cc2becab27:/app/backend# python3 -c "import cryptography"
root@26cc2becab27:/app/backend# python3 -c "import rapidocr_onnxruntime"
2026-02-13 17:48:47.330043749 [W:onnxruntime:Default, device_discovery.cc:211 DiscoverDevicesForPlatform] GPU device discovery failed: device_discovery.cc:91 ReadFileContents Failed to open file: "/sys/class/drm/card1/device/vendor"
root@26cc2becab27:/app/backend# python3 -c "import pyarrow"
root@26cc2becab27:/app/backend# python3 -c "from open_webui.env import DATABASE_URL"
Illegal instruction (core dumped)
<!-- gh-comment-id:3898512312 --> @olegbilovus commented on GitHub (Feb 13, 2026): @Classic298 There are a few that fails: ``` sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest root@26cc2becab27:/app/backend# python3 -c "import torch" Illegal instruction (core dumped) root@26cc2becab27:/app/backend# python3 -c "import cv2" root@26cc2becab27:/app/backend# python3 -c "import chromadb" root@26cc2becab27:/app/backend# python3 -c "import sentence_transformers" Illegal instruction (core dumped) root@26cc2becab27:/app/backend# python3 -c "import numpy" root@26cc2becab27:/app/backend# python3 -c "import cryptography" root@26cc2becab27:/app/backend# python3 -c "import rapidocr_onnxruntime" 2026-02-13 17:48:47.330043749 [W:onnxruntime:Default, device_discovery.cc:211 DiscoverDevicesForPlatform] GPU device discovery failed: device_discovery.cc:91 ReadFileContents Failed to open file: "/sys/class/drm/card1/device/vendor" root@26cc2becab27:/app/backend# python3 -c "import pyarrow" root@26cc2becab27:/app/backend# python3 -c "from open_webui.env import DATABASE_URL" Illegal instruction (core dumped) ```
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

@olegbilovus Confirmed: torch is the root cause.

Torch is not version-pinned in the Docker image - it's installed with "pip3 install torch --index-url https://download.pytorch.org/whl/cpu" (no version pin), so whatever version is latest on PyTorch's CPU index at image build time is what you get. This is why v0.7.2 worked but v0.8.0 doesn't - PyTorch likely updated their aarch64 wheels between builds.

Can you check the installed version?

pip show torch

And try downgrading to see if an older version works:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu torch==2.6.0

(adjust the version to whatever worked in your v0.7.2 container — you can check by running "pip show torch" inside a v0.7.2 container for comparison)

If a specific older version works, we may need to pin it for ARM compatibility, similar to the existing pyarrow pin.

Tell us which version works and we can pin it!

<!-- gh-comment-id:3898529506 --> @Classic298 commented on GitHub (Feb 13, 2026): @olegbilovus Confirmed: torch is the root cause. Torch is not version-pinned in the Docker image - it's installed with "pip3 install torch --index-url https://download.pytorch.org/whl/cpu" (no version pin), so whatever version is latest on PyTorch's CPU index at image build time is what you get. This is why v0.7.2 worked but v0.8.0 doesn't - PyTorch likely updated their aarch64 wheels between builds. Can you check the installed version? `pip show torch` And try downgrading to see if an older version works: `pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu torch==2.6.0` (adjust the version to whatever worked in your v0.7.2 container — you can check by running "pip show torch" inside a v0.7.2 container for comparison) If a specific older version works, we may need to pin it for ARM compatibility, similar to the existing pyarrow pin. Tell us which version works and we can pin it!
Author
Owner

@olegbilovus commented on GitHub (Feb 13, 2026):

@Classic298 v0.8 runs with version 2.10.0. v0.7.2 runs with 2.9.1

v0.8:

sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest
root@2fe9f6a4d327:/app/backend# pip show torch
Name: torch
Version: 2.10.0+cpu
Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration
Home-page:
Author:
Author-email: PyTorch Team <packages@pytorch.org>
License: BSD-3-Clause
Location: /usr/local/lib/python3.11/site-packages
Requires: filelock, fsspec, jinja2, networkx, sympy, typing-extensions
Required-by: accelerate, sentence-transformers, torchaudio, torchvision

v0.7.2:

sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:v0.7.2
root@5f1b126650ec:/app/backend# pip show torch
Name: torch
Version: 2.9.1+cpu
Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration
Home-page:
Author:
Author-email: PyTorch Team <packages@pytorch.org>
License: BSD-3-Clause
Location: /usr/local/lib/python3.11/site-packages
Requires: filelock, fsspec, jinja2, networkx, sympy, typing-extensions
Required-by: accelerate, sentence-transformers, torchaudio, torchvision
<!-- gh-comment-id:3898591063 --> @olegbilovus commented on GitHub (Feb 13, 2026): @Classic298 v0.8 runs with version `2.10.0`. v0.7.2 runs with `2.9.1` v0.8: ``` sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest root@2fe9f6a4d327:/app/backend# pip show torch Name: torch Version: 2.10.0+cpu Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration Home-page: Author: Author-email: PyTorch Team <packages@pytorch.org> License: BSD-3-Clause Location: /usr/local/lib/python3.11/site-packages Requires: filelock, fsspec, jinja2, networkx, sympy, typing-extensions Required-by: accelerate, sentence-transformers, torchaudio, torchvision ``` v0.7.2: ``` sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:v0.7.2 root@5f1b126650ec:/app/backend# pip show torch Name: torch Version: 2.9.1+cpu Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration Home-page: Author: Author-email: PyTorch Team <packages@pytorch.org> License: BSD-3-Clause Location: /usr/local/lib/python3.11/site-packages Requires: filelock, fsspec, jinja2, networkx, sympy, typing-extensions Required-by: accelerate, sentence-transformers, torchaudio, torchvision ```
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

@olegbilovus That confirms it. PyTorch 2.10.0 (shipped in the v0.8.0 Docker image) uses ARM instructions not supported by the RPi 4's Cortex-A72. PyTorch 2.9.1 (in v0.7.2) worked fine.

Can you try this workaround inside the v0.8.0 container?

pip install torch==2.9.1+cpu torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

Then try starting Open WebUI:

bash start.sh

If that works, we know pinning torch to <=2.9.1 for ARM builds would fix this.

<!-- gh-comment-id:3898606855 --> @Classic298 commented on GitHub (Feb 13, 2026): @olegbilovus That confirms it. PyTorch 2.10.0 (shipped in the v0.8.0 Docker image) uses ARM instructions not supported by the RPi 4's Cortex-A72. PyTorch 2.9.1 (in v0.7.2) worked fine. Can you try this workaround inside the v0.8.0 container? `pip install torch==2.9.1+cpu torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu` Then try starting Open WebUI: `bash start.sh` If that works, we know pinning torch to <=2.9.1 for ARM builds would fix this.
Author
Owner

@olegbilovus commented on GitHub (Feb 13, 2026):

@Classic298 it works.

sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest
root@7bf64c09d2a2:/app/backend# pip install torch==2.9.1+cpu torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
Looking in indexes: https://download.pytorch.org/whl/cpu
Collecting torch==2.9.1+cpu
  Downloading https://download.pytorch.org/whl/cpu/torch-2.9.1%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (29 kB)
Requirement already satisfied: torchvision in /usr/local/lib/python3.11/site-packages (0.25.0+cpu)
Requirement already satisfied: torchaudio in /usr/local/lib/python3.11/site-packages (2.10.0+cpu)
Requirement already satisfied: filelock in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (3.20.0)
Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (4.15.0)
Requirement already satisfied: sympy>=1.13.3 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (1.14.0)
Requirement already satisfied: networkx>=2.5.1 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (3.6.1)
Requirement already satisfied: jinja2 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (3.1.6)
Requirement already satisfied: fsspec>=0.8.5 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (2025.3.0)
Requirement already satisfied: numpy in /usr/local/lib/python3.11/site-packages (from torchvision) (2.3.5)
INFO: pip is looking at multiple versions of torchvision to determine which version is compatible with other requirements. This could take a while.
Collecting torchvision
  Downloading https://download.pytorch.org/whl/cpu/torchvision-0.24.1-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (5.9 kB)
Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.11/site-packages (from torchvision) (12.1.0)
INFO: pip is looking at multiple versions of torchaudio to determine which version is compatible with other requirements. This could take a while.
Collecting torchaudio
  Downloading https://download.pytorch.org/whl/cpu/torchaudio-2.10.0-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (6.9 kB)
  Downloading https://download.pytorch.org/whl/cpu/torchaudio-2.9.1-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (6.9 kB)
Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.11/site-packages (from sympy>=1.13.3->torch==2.9.1+cpu) (1.3.0)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.11/site-packages (from jinja2->torch==2.9.1+cpu) (2.1.5)
Downloading https://download.pytorch.org/whl/cpu/torch-2.9.1%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl (104.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━ 104.2/104.2 MB 4.5 MB/s eta 0:00:00
Downloading https://download.pytorch.org/whl/cpu/torchvision-0.24.1-cp311-cp311-manylinux_2_28_aarch64.whl (2.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4/2.4 MB 6.5 MB/s eta 0:00:00
Downloading https://download.pytorch.org/whl/cpu/torchaudio-2.9.1-cp311-cp311-manylinux_2_28_aarch64.whl (475 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━ 475.7/475.7 kB 3.4 MB/s eta 0:00:00
Installing collected packages: torch, torchvision, torchaudio
  Attempting uninstall: torch
    Found existing installation: torch 2.10.0+cpu
    Uninstalling torch-2.10.0+cpu:
      Successfully uninstalled torch-2.10.0+cpu
  Attempting uninstall: torchvision
    Found existing installation: torchvision 0.25.0+cpu
    Uninstalling torchvision-0.25.0+cpu:
      Successfully uninstalled torchvision-0.25.0+cpu
  Attempting uninstall: torchaudio
    Found existing installation: torchaudio 2.10.0+cpu
    Uninstalling torchaudio-2.10.0+cpu:
      Successfully uninstalled torchaudio-2.10.0+cpu
Successfully installed torch-2.9.1+cpu torchaudio-2.9.1 torchvision-0.24.1
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
root@7bf64c09d2a2:/app/backend# bash start.sh
Loading WEBUI_SECRET_KEY from file, not provided as an environment variable.
Generating WEBUI_SECRET_KEY
Loading WEBUI_SECRET_KEY from .webui_secret_key
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade c440947495f3 -> 374d2f66af06, Add prompt history table
INFO  [alembic.runtime.migration] Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table
INFO  [alembic.runtime.migration] Running upgrade 8452d01d26d7 -> f1e2d3c4b5a6, Add access_grant table
INFO  [alembic.runtime.migration] Running upgrade f1e2d3c4b5a6 -> a1b2c3d4e5f6, Add skill table
WARNI [open_webui.env]

WARNING: CORS_ALLOW_ORIGIN IS SET TO '*' - NOT RECOMMENDED FOR PRODUCTION DEPLOYMENTS.

WARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests.

 ██████╗ ██████╗ ███████╗███╗   ██╗    ██╗    ██╗███████╗██████╗ ██╗   ██╗██╗
██╔═══██╗██╔══██╗██╔════╝████╗  ██║    ██║    ██║██╔════╝██╔══██╗██║   ██║██║
██║   ██║██████╔╝█████╗  ██╔██╗ ██║    ██║ █╗ ██║█████╗  ██████╔╝██║   ██║██║
██║   ██║██╔═══╝ ██╔══╝  ██║╚██╗██║    ██║███╗██║██╔══╝  ██╔══██╗██║   ██║██║
╚██████╔╝██║     ███████╗██║ ╚████║    ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║
 ╚═════╝ ╚═╝     ╚══════╝╚═╝  ╚═══╝     ╚══╝╚══╝ ╚══════╝╚═════╝  ╚═════╝ ╚═╝


v0.8.0 - building the best AI user interface.

https://github.com/open-webui/open-webui

Fetching 30 files: 100%|████| 30/30 [00:00<00:00, 8189.87it/s]
Download complete: : 0.00B [00:00, ?B/s]              , ?it/s]
Loading weights: 100%|█| 103/103 [00:00<00:00, 345.96it/s, Mat
BertModel LOAD REPORT from: /app/backend/data/cache/embedding/models/models--sentence-transformers--all-MiniLM-L6-v2/snapshots/c9745ed1d9f207416be6d2e6f8de32d1f16199bf
Key                     | Status     |  |
------------------------+------------+--+-
embeddings.position_ids | UNEXPECTED |  |

Notes:
- UNEXPECTED    :can be ignored when loading from different task/architecture; not ok if you expect identical arch.
INFO:     Started server process [71]
INFO:     Waiting for application startup.
2026-02-13 18:21:23.119 | INFO     | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO
2026-02-13 18:21:23.121 | INFO     | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools...
2026-02-13 18:21:23.177 | INFO     | open_webui.utils.plugin:install_frontmatter_requirements:423 - No requirements found in frontmatter.
<!-- gh-comment-id:3898688536 --> @olegbilovus commented on GitHub (Feb 13, 2026): @Classic298 it works. ``` sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest root@7bf64c09d2a2:/app/backend# pip install torch==2.9.1+cpu torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu Looking in indexes: https://download.pytorch.org/whl/cpu Collecting torch==2.9.1+cpu Downloading https://download.pytorch.org/whl/cpu/torch-2.9.1%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (29 kB) Requirement already satisfied: torchvision in /usr/local/lib/python3.11/site-packages (0.25.0+cpu) Requirement already satisfied: torchaudio in /usr/local/lib/python3.11/site-packages (2.10.0+cpu) Requirement already satisfied: filelock in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (3.20.0) Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (4.15.0) Requirement already satisfied: sympy>=1.13.3 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (1.14.0) Requirement already satisfied: networkx>=2.5.1 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (3.6.1) Requirement already satisfied: jinja2 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (3.1.6) Requirement already satisfied: fsspec>=0.8.5 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (2025.3.0) Requirement already satisfied: numpy in /usr/local/lib/python3.11/site-packages (from torchvision) (2.3.5) INFO: pip is looking at multiple versions of torchvision to determine which version is compatible with other requirements. This could take a while. Collecting torchvision Downloading https://download.pytorch.org/whl/cpu/torchvision-0.24.1-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (5.9 kB) Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.11/site-packages (from torchvision) (12.1.0) INFO: pip is looking at multiple versions of torchaudio to determine which version is compatible with other requirements. This could take a while. Collecting torchaudio Downloading https://download.pytorch.org/whl/cpu/torchaudio-2.10.0-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (6.9 kB) Downloading https://download.pytorch.org/whl/cpu/torchaudio-2.9.1-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (6.9 kB) Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.11/site-packages (from sympy>=1.13.3->torch==2.9.1+cpu) (1.3.0) Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.11/site-packages (from jinja2->torch==2.9.1+cpu) (2.1.5) Downloading https://download.pytorch.org/whl/cpu/torch-2.9.1%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl (104.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━ 104.2/104.2 MB 4.5 MB/s eta 0:00:00 Downloading https://download.pytorch.org/whl/cpu/torchvision-0.24.1-cp311-cp311-manylinux_2_28_aarch64.whl (2.4 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4/2.4 MB 6.5 MB/s eta 0:00:00 Downloading https://download.pytorch.org/whl/cpu/torchaudio-2.9.1-cp311-cp311-manylinux_2_28_aarch64.whl (475 kB) ━━━━━━━━━━━━━━━━━━━━━━━ 475.7/475.7 kB 3.4 MB/s eta 0:00:00 Installing collected packages: torch, torchvision, torchaudio Attempting uninstall: torch Found existing installation: torch 2.10.0+cpu Uninstalling torch-2.10.0+cpu: Successfully uninstalled torch-2.10.0+cpu Attempting uninstall: torchvision Found existing installation: torchvision 0.25.0+cpu Uninstalling torchvision-0.25.0+cpu: Successfully uninstalled torchvision-0.25.0+cpu Attempting uninstall: torchaudio Found existing installation: torchaudio 2.10.0+cpu Uninstalling torchaudio-2.10.0+cpu: Successfully uninstalled torchaudio-2.10.0+cpu Successfully installed torch-2.9.1+cpu torchaudio-2.9.1 torchvision-0.24.1 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv root@7bf64c09d2a2:/app/backend# bash start.sh Loading WEBUI_SECRET_KEY from file, not provided as an environment variable. Generating WEBUI_SECRET_KEY Loading WEBUI_SECRET_KEY from .webui_secret_key INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade c440947495f3 -> 374d2f66af06, Add prompt history table INFO [alembic.runtime.migration] Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table INFO [alembic.runtime.migration] Running upgrade 8452d01d26d7 -> f1e2d3c4b5a6, Add access_grant table INFO [alembic.runtime.migration] Running upgrade f1e2d3c4b5a6 -> a1b2c3d4e5f6, Add skill table WARNI [open_webui.env] WARNING: CORS_ALLOW_ORIGIN IS SET TO '*' - NOT RECOMMENDED FOR PRODUCTION DEPLOYMENTS. WARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests. ██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗ ██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║ ██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║ ██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║ ╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝ v0.8.0 - building the best AI user interface. https://github.com/open-webui/open-webui Fetching 30 files: 100%|████| 30/30 [00:00<00:00, 8189.87it/s] Download complete: : 0.00B [00:00, ?B/s] , ?it/s] Loading weights: 100%|█| 103/103 [00:00<00:00, 345.96it/s, Mat BertModel LOAD REPORT from: /app/backend/data/cache/embedding/models/models--sentence-transformers--all-MiniLM-L6-v2/snapshots/c9745ed1d9f207416be6d2e6f8de32d1f16199bf Key | Status | | ------------------------+------------+--+- embeddings.position_ids | UNEXPECTED | | Notes: - UNEXPECTED :can be ignored when loading from different task/architecture; not ok if you expect identical arch. INFO: Started server process [71] INFO: Waiting for application startup. 2026-02-13 18:21:23.119 | INFO | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO 2026-02-13 18:21:23.121 | INFO | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools... 2026-02-13 18:21:23.177 | INFO | open_webui.utils.plugin:install_frontmatter_requirements:423 - No requirements found in frontmatter. ```
Author
Owner

@Classic298 commented on GitHub (Feb 13, 2026):

Thanks for confirming. We will pin the version and then it will be fixed for all raspberry pi users from 0.8.1 onwards

<!-- gh-comment-id:3898761136 --> @Classic298 commented on GitHub (Feb 13, 2026): Thanks for confirming. We will pin the version and then it will be fixed for all raspberry pi users from 0.8.1 onwards
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#106446