Files
2026-09-21 19:12:31 +08:00

2.1 KiB
Raw Permalink Blame History

2026-09-18

  • 对 FastAPI 学生管理系统做了整体代码审查(main/settings/models/api/*、Docker 配置),发现的问题:Dockerfile COPY ../ 非法导致构建失败、files.py 路径遍历漏洞、grade.py selectAll 引用不存在的 name 字段、student.py selectPage 的 majorName 判断逻辑错误、登录/改密接口回传明文密码、全项目无鉴权且密码明文存储、register 接口可能把不存在的字段传给 Student.create 等。仅审查未修改代码。

排障:数据库连接与时区问题(已解决)

  • 现象:Navicat 连 3306 报「服务器返回无效的时区。需要设置 serverTimezone 属性」,且看不到项目数据库。
  • 根因1:本机另有 Windows 版 mysqld 占用 3306;Docker 的 student-mysql 实际映射 3308→3306,数据在 3308 那个实例里。
  • 根因2:MySQL system_time_zone=CST(歧义时区)导致客户端报时区错误。
  • 根因3:运行中的 backend(来自 WeMeet 接收目录 C:\Users\Windows\AppData\Roaming\Tencent\WeMeet\Global\Data\IM\file\2026-9\3758211051474203869\student_system\student_system\)的 settings.py 被加了 serverTimezone 参数,aiomysql 不支持 → 容器崩溃重启循环。
  • 修复:删除该参数并 docker cp 回容器+重启;MySQL 执行 SET GLOBAL time_zone='+8:00' 并在 compose 的 mysql command 中加 --default-time-zone=+08:00 持久化。已验证 backend 启动成功、接口 200、student_system 数据完整。
  • 注意:D:\fastapi-app 只是项目副本,真正在跑的栈在上述 WeMeet 目录;两份 settings.py 内容可能不同步。

Docker 资产盘点

共 4 组来源:① student_system 项目(3 容器,来自 WeMeet 接收目录);② Dify 1.17.1 全家桶(16 容器,D:\dify\docker,占用最大 ~13GB 镜像);③ Milvus 向量库 3 件套(D:\milvus-docker,已停);④ 散装容器 web(nginx,:8083)/redis-server/student-ms-mysql(mysql:8.0,:3307,已停,疑为更早的测试遗留)。孤儿镜像:stu_test:latest、:d0d674272be3。镜像共 17.84GB + 构建缓存 710MB。未删除任何东西,仅盘点。