You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongo查询偶发IncorrectResultSizeDataAccessException,Admin面板登录失败

解决Spring的IncorrectResultSizeDataAccessException登录异常

Hey,这个异常我熟!IncorrectResultSizeDataAccessException本质就是Spring执行查询时,预期刚好1条结果,但实际返回了0条或者多条——结合你两台正常、第三台同步分支后出问题的场景,大概率是数据、配置或者分支变更的锅,给你一步步排查的思路:

  • 先排查MongoDB数据问题
    这是最常见的原因,直接用MongoDB Shell登录第三台连接的数据库,执行查询命令:

    # 替换成你的用户表名,比如users/admin_users
    db.your_user_collection.find({email: "admin"})
    

    看返回结果:

    • 如果返回0条:说明第三台的MongoDB里压根没有admin账号,要么手动插入(从正常机器导出数据导入),要么检查数据初始化脚本是不是没在第三台执行;
    • 如果返回多条:说明存在重复的admin邮箱账号,删掉多余的只保留一条即可。
      另外还要确认第三台的配置文件里,MongoDB的连接地址、数据库名是不是和另外两台完全一致,别连错了实例!
  • 检查分支同步后的代码/配置变更
    同步最新分支后,可能有代码或配置的改动影响了查询逻辑:

    • 看看最近的提交记录,有没有修改用户查询的代码?比如原本用的是findOneByEmail(返回Optional,空的话只会返回null),改成了getByEmail(必须返回1条,否则直接抛异常);
    • 检查Gulp构建后的前端/后端配置文件:第三台构建时是不是加载了错误的环境配置?比如开启了额外的用户状态过滤(比如只查激活状态的用户,但admin账号没激活)?
  • 核对依赖版本差异
    有时候分支同步会带来依赖版本的更新,导致查询行为变化:

    • 对比另外两台的package.json(前端)和pom.xml/build.gradle(后端Spring项目),看看第三台的Spring Data MongoDB、Node.js依赖版本是不是和正常机器一致;
    • 尝试重新安装依赖:前端执行npm install,后端执行mvn clean install(或对应构建命令),排除依赖缓存的问题。
  • 临时调试定位
    如果以上都没找到问题,在后端代码里加个日志打印查询结果数量,快速定位问题:

    // 在Service或Controller的登录逻辑里添加
    long adminCount = userRepository.countByEmail("admin");
    log.info("Admin account query count: {}", adminCount);
    

    运行后看日志,就能明确是返回0条还是多条,缩小排查范围。

内容的提问来源于stack exchange,提问作者Georgi Michev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:53:35