原因

系统重置,浏览器上的bitwarden(2026.4.1)需要重新登录,登录后进行例行配置,提示报错,后台404日志输出,以为是Vaultwarden版本低了。就例行升级了一下Vaultwarden到1.36.0

这么一操作,直接炸了!

vaultwarden  | /--------------------------------------------------------------------\
vaultwarden  | |                        Starting Vaultwarden                        |
vaultwarden  | |                           Version 1.36.0                           |
vaultwarden  | |--------------------------------------------------------------------|
vaultwarden  | | This is an *unofficial* Bitwarden implementation, DO NOT use the   |
vaultwarden  | | official channels to report bugs/features, regardless of client.   |
vaultwarden  | | Send usage/configuration questions or feature requests to:         |
vaultwarden  | |   https://github.com/dani-garcia/vaultwarden/discussions or        |
vaultwarden  | |   https://vaultwarden.discourse.group/                             |
vaultwarden  | | Report suspected bugs/issues in the software itself at:            |
vaultwarden  | |   https://github.com/dani-garcia/vaultwarden/issues/new            |
vaultwarden  | \--------------------------------------------------------------------/
vaultwarden  | 
vaultwarden  | [INFO] Using saved config from `data/config.json` for configuration.
vaultwarden  | 
vaultwarden  | [WARNING] The following environment variables are being overridden by the config.json file.
vaultwarden  | [WARNING] Please use the admin panel to make changes to them:
vaultwarden  | [WARNING] DOMAIN, SENDS_ALLOWED, SIGNUPS_ALLOWED, EMERGENCY_ACCESS_ALLOWED, ADMIN_TOKEN, ADMIN_SESSION_LIFETIME
vaultwarden  | 
vaultwarden  | [2026-05-22 11:54:01.038][panic][ERROR] thread 'main' panicked at 'Error running migrations: QueryError(DieselMigrationName { name: "2026-03-09-005927_add_archives", version: MigrationVersion("20260309005927") }, DatabaseError(Unknown, "Can't create table `vaultwarden`.`archives` (errno: 150 \"Foreign key constraint is incorrectly formed\")"))': src/db/mod.rs:501
vaultwarden  |    0: vaultwarden::init_logging::{{closure}}
vaultwarden  |    1: std::panicking::panic_with_hook
vaultwarden  |    2: std::panicking::panic_handler::{closure#0}
vaultwarden  |    3: std::sys::backtrace::__rust_end_short_backtrace::<std::panicking::panic_handler::{closure#0}, !>
vaultwarden  |    4: __rustc::rust_begin_unwind
vaultwarden  |    5: core::panicking::panic_fmt
vaultwarden  |    6: core::result::unwrap_failed
vaultwarden  |    7: vaultwarden::db::DbPool::from_config
vaultwarden  |    8: vaultwarden::main::{{closure}}
vaultwarden  |    9: vaultwarden::main
vaultwarden  |   10: std::sys::backtrace::__rust_begin_short_backtrace
vaultwarden  |   11: main
vaultwarden  |   12: <unknown>
vaultwarden  |   13: __libc_start_main
vaultwarden  |   14: _start
vaultwarden  | 
vaultwarden exited with code 101

只有回退Vaultwarden到1.35.8 ,bitwarden(2026.3 )才行。但是这又不符合我喜欢用新的风格,所以进行了一次排查。

在此之前回滚数据库,登录了Vaultwarden页面进行了完整数据导出。

排查过程

Ai提示错误日志vaultwarden 在数据库迁移(migrations)阶段失败了,导致服务直接崩溃退出(exit code 101)

AI稀里糊涂说了一大堆,感觉没一个说中重点。

最终落在我用错版本上了。然后我就去Vaultwarden项目仓库关于数据库部分内容;看了看我的数据库用的是官方推荐的。

往下滑,发现了这么一篇内容:Foreign key errors, collation and charset(外键错误、排序规则和字符集,提到了外键约束失败,正符合我的报错信息,然后提交给AI说了,说我用错了字符集和排序规则 ,这算是历史遗留问题了,创建数据库我习惯用默认的,当时就没管。

修复

官方文档说了可以使用sql命令修复,但是不熟悉就没管,干脆从头重建。按照官方要求的创建了数据库,并重新创建账号,导入了以前的数据。才恢复了使用。