ISSUE-003-admin-create-user.md 1.8 KB

ISSUE-003:管理员创建用户500错误

状态: 待解决 严重度: 中 创建日期: 2026-06-29 模块: 用户管理 测试用例: ADMIN-CREATE-PARENT

问题描述

管理员通过 POST /api/admin/users/create 创建新用户(phone=13800138002)时返回 Spring Boot 默认 500 错误页面(非业务 Result.error)。

错误信息

[ADMIN-CREATE-PARENT] FAIL code=500 resp={'timestamp': '...', 'status': 500, 'error': 'Internal Server Error', 'path': '/api/admin/users/create'}

复现步骤

  1. admin 登录 → POST /api/admin-auth/login
  2. 创建用户 → POST /api/admin/users/create (phone=13800138002, role=parent, nickname="E2E测试家长")
  3. 失败:返回 Spring 默认 500 错误

根因分析

AdminController.createUser() 逻辑:

  1. 检查 phone 是否已存在
  2. 新建 User 对象
  3. userMapper.insert(user) → 此处抛出未捕获异常

500(Spring 默认错误页面)而非 Result.error(code=500) 表明是数据库写入异常,可能原因:

  1. password 字段约束:user.setPassword("") 空字符串可能违反 NOT NULL 或其他约束
  2. 数据库触发器:users 表有触发器导致插入失败
  3. 字段类型不匹配:某些字段值为空但类型不兼容
  4. 唯一索引冲突(phone 之外的索引)

修复建议

  1. 检查远程 users 表结构:

    SHOW CREATE TABLE users;
    
  2. 检查 password 字段允许 NULL 还是 NOT NULL

  3. 在 AdminController.createUser() 添加 try-catch 捕获 DataAccessException

  4. 考虑设置 password 为 null 而非空字符串,或设置默认值

责任人

待定

修复日期

待定

回归测试

修复后运行:python e2e_multi_role.py 验证 ADMIN-CREATE-PARENT 通过。