主题
常见问题
项目开发和使用中经常遇到的问题,以及解决方法。
环境相关
Q: 启动后端时报数据库连接失败
原因:MySQL 服务未启动,或数据库配置不匹配。
解决:
- 确认 MySQL 服务已启动
- 检查
application.yml中的数据库地址、用户名、密码 - 确认
mall数据库已创建并导入了docs/sql/mall.sql
Q: Redis 连接超时
原因:Redis 服务未启动。
解决:运行 redis-server 启动 Redis,默认端口 6379。
Q: 前端页面显示"暂无数据"但数据库有数据
原因:后端服务未启动或端口不对。
解决:
- 确认
mall-admin(8080)和mall-portal(8085)都已启动 - 打开浏览器控制台看是否有网络请求报错
- 检查 Vite 代理配置是否正确
功能相关
Q: 后台登录后侧边栏菜单为空
原因:当前管理员账号没有分配角色,或角色没有分配菜单权限。
解决:用超级管理员(admin)登录 → 权限管理 → 给该管理员分配角色 → 给角色分配菜单。
Q: 商品分类"是否显示"开关切换后自动弹提示
原因:这是 el-switch 组件的已知行为,初始化时会触发 change 事件。
解决:已在代码中处理,通过标记位防止初始化时误触发。
Q: 前台商城页面打不开
原因:前台需要 mall-portal(8085)服务运行。
解决:确保同时启动了 mall-admin 和 mall-portal 两个后端服务。
Q: 退货申请审核按钮点了没反应
原因:可能是 keep-alive 缓存导致页面数据未刷新。
解决:离开页面后重新进入,或刷新页面后再操作。
开发相关
Q: 新增的 API 返回 401 未授权
原因:新接口没有加入安全白名单。
解决:在对应的 application.yml 中的 secure.ignored.urls 里添加新接口路径。
Q: 前端编译报 TypeScript 错误
解决:
- 运行
cd mall-admin-web && npx tsc --noEmit查看具体错误 - 检查是否有新增的类型未定义
- 确认
src/types/下的类型文件是否完整
Q: 修改了代码但页面没变化
原因:可能是浏览器缓存或 Vue keep-alive 缓存。
解决:
- 浏览器硬刷新(Ctrl + Shift + R)
- 如果是列表页,检查是否需要在
onActivated中重新加载数据
数据相关
Q: 数据库 73 张表在哪里看
所有表结构定义在 docs/sql/mall.sql 文件中。业务含义可参考 数据字典。
Q: 可以新增数据库表吗
当前阶段不新增表,所有功能基于现有 73 张表实现。
Q: 测试数据在哪里
数据库脚本已包含基础数据(管理员、角色、菜单、部分商品等)。如需更多测试数据,可参考数据字典手动添加。