389 字
2 分钟
解决 Open WebUI 更新后无法启动的问题
在任何危险操作前都请先备份!
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: user.scim
[SQL: SELECT count(*) AS count_1
FROM (SELECT user.id AS user_id, user.email AS user_email, user.username AS user_username, user.role AS user_role, user.name AS user_name, user.profile_image_url AS user_profile_image_url, user.profile_banner_image_url AS user_profile_banner_image_url, user.bio AS user_bio, user.gender AS user_gender, user.date_of_birth AS user_date_of_birth, user.timezone AS user_timezone, user.presence_state AS user_presence_state, user.status_emoji AS user_status_emoji, user.status_message AS user_status_message, user.status_expires_at AS user_status_expires_at, user.info AS user_info, user.settings AS user_settings, user.oauth AS user_oauth, user.scim AS user_scim, user.last_active_at AS user_last_active_at, user.updated_at AS user_updated_at, user.created_at AS user_created_at
FROM user) AS anon_1]手欠了,更新 open-webui,更新出问题了,docker 查询容器日志,发现是数据库无法更新,以上是错误。
简单来说就是新版本给 user 表加了一列 scim,查了下应该是身份验证方面的东西,根据 issue 里好心人说的方法,可以用 python 代码去做数据库迁移,但我试了无效,和同 issue 里面那人的结果一样,Required environment variable not found. Terminating now(其他方法我也试了,都无效)。
所以应该不是迁移上出了问题,估计是权限了,但之前使用也没啥事情,文档里也没提到要创建高权限用户,所以我就不整活了,直接去查看数据库,手动更新吧。

检查数据表后发现,确实没有 scim 列,那么 scim 是什么类型呢?去源码搜 user.scim。
可以看到和 oauth 一样,是 JSON 类型,但我印象中的 sqlite 没有这个类型(可能是新版本),不过问题不大,oauth 能用 scim 也能用! ALTER TABLE user ADD COLUMN scim JSON; 直接执行 alter,接着重启容器测试。

OK,问题解决

解决 Open WebUI 更新后无法启动的问题
https://blog.erio.work/posts/解决open-webui更新后无法启动的问题/