mirror of
https://github.com/open-webui/open-webui.git
synced 2026-07-16 14:39:31 -05:00
[GH-ISSUE #21349] issue: upgrade to 0.8.0 can not start up #19451
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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
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
README.md.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
Additional Information
No response
@Classic298 commented on GitHub (Feb 13, 2026):
No such table access grant
This is the error.
One of these things happened
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.
@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.
@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
@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
@Classic298 commented on GitHub (Feb 13, 2026):
this
and this
https://docs.openwebui.com/troubleshooting/manual-database-migration/#no-such-table-errors
@Joly0 commented on GitHub (Feb 13, 2026):
Does not work:
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:
This is, as i said, running as docker and on sqlite3 database. I created a backup of the db and verified it is correct.
@Classic298 commented on GitHub (Feb 13, 2026):
updating docs..
@Classic298 commented on GitHub (Feb 13, 2026):
@Joly0
https://docs.openwebui.com/troubleshooting/manual-database-migration/#table-already-exists-errors
@Joly0 commented on GitHub (Feb 13, 2026):
Ok, seems to have worked:
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?
@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
@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 :)
@itsHenry35 commented on GitHub (Feb 13, 2026):
Met exact same issue :D
Docker and sqlite
@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.
@itsHenry35 commented on GitHub (Feb 13, 2026):
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.
@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
@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 -1and thenalembic 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.@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.
@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.
@olegbilovus commented on GitHub (Feb 13, 2026):
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.
@Classic298 commented on GitHub (Feb 13, 2026):
@olegbilovus by any chance, are you running OOM? Any other logs you can give us?
@olegbilovus commented on GitHub (Feb 13, 2026):
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:
If I run
echo $?it gives me132.This is my docker-compose:
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.
@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:
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.
@olegbilovus commented on GitHub (Feb 13, 2026):
@Classic298
Running
python3 -c "import onnxruntime"it shows this:@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
@olegbilovus commented on GitHub (Feb 13, 2026):
@Classic298 There are a few that fails:
@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 torchAnd 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!
@olegbilovus commented on GitHub (Feb 13, 2026):
@Classic298 v0.8 runs with version
2.10.0. v0.7.2 runs with2.9.1v0.8:
v0.7.2:
@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/cpuThen try starting Open WebUI:
bash start.shIf that works, we know pinning torch to <=2.9.1 for ARM builds would fix this.
@olegbilovus commented on GitHub (Feb 13, 2026):
@Classic298 it works.
@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