🐛 Bug 描述
注册时报错 "服务正在启动或遇到问题",即使服务正常运行也无法注册。
🔍 根本原因
数据库中存在两个租户的 sso_domain 都包含 fu18.cn。
当用户使用 @fu18.cn 邮箱注册时,代码执行模糊匹配 Tenant.sso_domain.ilike("%fu18.cn%"),返回了两条记录,导致 SQLAlchemy 的 scalar_one_or_none() 方法抛出 MultipleResultsFound 异常。
📊 受影响范围
所有 @fu18.cn 结尾的邮箱都无法完成注册。
🔧 修复建议
- 在租户创建时增加
sso_domain 唯一性校验,防止重复
- 或者在查询时使用
scalar_many() + 取第一条,而非 scalar_one_or_none()
- 考虑改用精确匹配
Tenant.sso_domain == email_domain 或前缀匹配,减少误匹配概率
📝 其他信息
- 问题发现时间:2026-04-26
- 发现人:xiaoan
🐛 Bug 描述
注册时报错 "服务正在启动或遇到问题",即使服务正常运行也无法注册。
🔍 根本原因
数据库中存在两个租户的
sso_domain都包含fu18.cn。当用户使用
@fu18.cn邮箱注册时,代码执行模糊匹配Tenant.sso_domain.ilike("%fu18.cn%"),返回了两条记录,导致 SQLAlchemy 的scalar_one_or_none()方法抛出MultipleResultsFound异常。📊 受影响范围
所有
@fu18.cn结尾的邮箱都无法完成注册。🔧 修复建议
sso_domain唯一性校验,防止重复scalar_many()+ 取第一条,而非scalar_one_or_none()Tenant.sso_domain == email_domain或前缀匹配,减少误匹配概率📝 其他信息