ad97fd3da5
- .gitignore 新增忽略 .idea/、videos/、*.tar.gz、*.csproj.user、db 运行时文件 - 根目录 15 个中文运维 md 归档到 docs/ - 删除无部署脚本引用的 Dockerfile 与 Dockerfile-arm(保留 Dockerfile.prod) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.5 KiB
3.5 KiB
数据看板不更新问题排查
🔍 问题现象
视频已经下载了,但是数据看板中的数据没有更新。
📋 可能的原因
1. 数据库记录未保存
- 视频文件下载成功,但数据库记录保存失败
- 检查日志中是否有 "批量保存视频到数据库失败" 的错误
2. 前端缓存问题
- 浏览器缓存了旧的统计数据
- 前端组件没有刷新数据
3. 数据库查询问题
- 统计查询没有正确读取数据
🔧 排查步骤
步骤1:检查数据库中的记录
方法一:通过前端页面
- 访问
http://localhost:8001 - 进入「同步记录」页面
- 查看是否有视频记录显示
- 检查视频记录是否有
videoSavePath字段
方法二:通过 Swagger API
- 访问
http://localhost:10101/swagger - 找到
POST /api/video/paged - 输入参数:
{"pageIndex":1,"pageSize":10} - 执行查询,查看返回的数据
方法三:直接查询数据库
cd /Users/gaotu/WebstormProjects/dysync.net
sqlite3 db/dy.sqlite "SELECT COUNT(*) FROM dy_collect_video;"
sqlite3 db/dy.sqlite "SELECT id, videoTitle, videoSavePath FROM dy_collect_video LIMIT 5;"
步骤2:检查日志
查看最新的日志文件,搜索关键词:
- "批量保存视频到数据库失败"
- "本次共同步成功"
- "下载成功"
# 查看最新日志
tail -100 logs/log-debug-20251120.txt | grep -E "(下载成功|批量保存|同步成功)"
步骤3:检查前端数据刷新
-
清除浏览器缓存
- 按
F12打开开发者工具 - 右键点击刷新按钮
- 选择「清空缓存并硬性重新加载」
- 按
-
手动刷新数据看板
- 进入「数据看板」页面
- 按
F5刷新页面 - 或关闭页面重新打开
-
检查网络请求
- 按
F12打开开发者工具 - 切换到「Network」标签
- 刷新「数据看板」页面
- 查看
/api/video/statics请求的响应数据
- 按
🛠️ 解决方案
方案1:强制刷新前端数据
在前端代码中添加自动刷新功能,修改 statics.vue:
// 在 onMounted 中添加定时刷新
onMounted(() => {
loadDashboardData();
// 每30秒自动刷新一次
const timer = setInterval(() => {
loadDashboardData();
}, 30000);
onUnmounted(() => {
clearInterval(timer);
});
});
方案2:检查数据库保存逻辑
如果日志显示 "批量保存视频到数据库失败",需要检查:
- 数据库连接是否正常
- 视频记录是否有重复(AwemeId 冲突)
- 字段是否有空值或格式错误
方案3:手动触发数据刷新
在前端「数据看板」页面添加刷新按钮:
<a-button @click="loadDashboardData" type="primary">刷新数据</a-button>
📝 快速检查清单
- 数据库中是否有视频记录?
- 视频记录是否有
videoSavePath字段? - 视频文件是否实际存在?
- 日志中是否有保存失败的错误?
- 前端是否缓存了旧数据?
- API 返回的数据是否正确?
🎯 立即操作
- 刷新浏览器页面(清除缓存)
- 检查「同步记录」页面,看是否有视频记录
- 查看浏览器控制台(F12),检查是否有错误
- 查看网络请求,确认 API 返回的数据
如果「同步记录」页面有数据,但「数据看板」没有更新,那就是前端缓存问题,需要强制刷新。
如果「同步记录」页面也没有数据,那就是数据库保存问题,需要检查日志。