开源版本更新
当前文档基于 SurveyKing 开源版 v1.13.0。升级的基本原则是:先备份数据和附件,再更新程序;程序文件可以替换,持久化数据目录不能删除。
升级前检查
- 阅读开源版更新日志,确认目标版本变化;
- 在“系统管理 → 系统设置 → 数据备份”导出 ZIP;
- 备份部署环境中的配置、数据库和附件目录;
- 记录端口、域名、反向代理、邮件和 AI 配置;
- 预留回滚时间,并尽量在低峰期操作。
不要只备份 JAR、镜像或安装目录,它们不包含完整业务数据。
Windows 更新
从官方下载:
更新步骤:
- 在启动器中停止服务;
- 右键托盘图标选择“退出”;
- 备份
%LOCALAPPDATA%\SurveyKing; - 运行新版安装包;
- 启动 SurveyKing,确认项目、答卷和附件。
Windows 的程序目录与数据目录分离。卸载或覆盖程序前仍应退出托盘进程,避免文件占用。
Docker Compose 更新
cd /opt/surveyking
docker compose pull
docker compose up -d
docker compose ps
docker compose logs --tail=200 surveyking
如果 Compose 文件在其他目录,请进入实际目录执行。不要使用 down -v,不要删除 config/、files/ 或 mysql/data/。
Docker 单容器更新
docker pull surveyking/surveyking:latest
docker stop surveyking
docker rm surveyking
然后使用原来的端口和四个宿主机挂载目录重新执行 docker run。完整命令见 Docker 单容器部署。
从源码更新
先更新源码,再从后端目录构建:
git pull
cd surveyking-server/server
./gradlew clean :api:bootJar -Ph2 -x test
输出为:
api/build/libs/surveyking-v1.13.0.jar
停止旧服务,备份工作目录中的 config/、db/ 和 files/,替换 JAR 后再启动。当前项目使用 Gradle,不要照搬旧文档中的 Maven mvn package 命令。
如果同时修改了前端源码,先按项目构建流程生成前端资源,再构建后端交付物;单独托管前端时要保证前后端版本一致。
数据库升级脚本
全新安装 v1.13.0 时,/setup 会自动创建数据库表和初始数据,不需要手工执行 SQL。
很早的版本原地升级时可能需要历史脚本。必须从当前版本开始逐级执行,不能跳过中间版本:
这些脚本只用于对应历史版本,不要用于全新数据库。跨越多个大版本时,建议先复制生产数据库做演练;不确定时优先新建 v1.13.0 系统,再通过应用备份迁移。
升级后验证
- 登录页与后台能正常打开;
- 当前版本与目标版本一致;
- 管理员和普通用户能够登录;
- 项目、题目、答卷、附件和二维码正常;
- 邮件、AI、域名和 HTTPS 正常;
- 日志中没有持续的数据库迁移或权限错误。
回滚
回滚不是简单换回旧 JAR。应用版本、数据库结构和文件数据必须相互兼容。安全的回滚依赖升级前保存的旧程序、数据库快照、config/ 和 files/;回滚前停止写入,整体恢复后再启动旧版本。