问题描述
使用 docker 部署,后台设置开启验证,重启服务器之后,docker重启,再次访问系统,验证码获取失败,导致无法进行验证,也就无法登陆系统。
如果不了解卷王的,可以去官网看下。
https://surveyking.cn/
问题解决
1. 关闭验证,继续使用
通过 docker 容器,将 /surveyking/surveyking.mv.db 复制到宿主机中。
使用 h2 数据库连接工具(可使用 datagrip,驱动为最新版本驱动)
账号为:sa
密码为:sa
连接方式:embedded
参考连接:(连接地址上面,不要加后缀.mv.db)
jdbc:h2:~/TEMP/surveyking
连接成功后,在 PUBLIC 的 schemas 下面,会有一张T_SYS_INFO
表。
将这张表的 SETTING 字段,设置为 {“captchaEnabled”:false}
保存后,将数据库文件,通过 docker 命令,复制到容器内,覆盖原有内容。
注意命名不要发生改变。
重启 docker 容器,再次访问,验证即关闭了。
2. 数据迁移,重新部署
通过 docker 容器,将 /surveyking/surveyking.mv.db 复制到宿主机中。
使用 h2 数据库连接工具(可使用 datagrip,驱动为最新版本驱动)
账号为:sa
密码为:sa
连接方式:embedded
参考连接:(连接地址上面,不要加后缀.mv.db)
jdbc:h2:~/TEMP/surveyking
连接成功后,复制下面几张表中的数据
- T_ANSWER:收集数据
- T_PROJECT:项目配置
- T_PROJECT_PARTNER:项目协作者配置(该表数据会有重复,将id 不重复的复制进去即可)
复制这几张表数据后,将数据导入到自己的 mysql 数据库中。
然后重新部署,使用 mysql 数据库,后续问题更方便排查一些。
参考启动脚本
APP_NAME=/opt/surveyking/surveyking-v1.6.0.jar
# 部署后端
nohup java -jar ${APP_NAME} \
--spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:3306/surveyking \
--spring.datasource.dynamic.datasource.master.username=surveyking \
--spring.datasource.dynamic.datasource.master.password=surveyking \
--server.port=1991 \
--file-storage.local.root-path=/opt/surveyking/files >> /opt/surveyking/qustion.log &