TROUBLESHOOTING.md
4.28 KB
故障排除指南
常见问题及解决方案
1. 数据库字段错误
问题:
pymysql.err.OperationalError: (1105, "errCode = 2, detailMessage = Unknown column 'xxx' in 'xxx'")
原因:
数据库表结构与代码中使用的字段名不匹配。
解决方案:
- 查看
DATABASE_SETUP.md了解如何配置字段 - 修改对应脚本中的SQL查询,使用实际存在的字段名
- 如果是分类字段不存在,这些字段是可选的,代码会自动跳过
已修复的字段:
- ✅
category_level2_id和category_level3_id现在是可选的 - ✅ 基础功能不依赖分类字段
2. 连接超时
问题:
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server...")
解决方案:
- 检查数据库配置:
config/offline_config.py - 确认网络连接和防火墙设置
- 运行测试:
python3 test_connection.py
3. 内存不足
问题:
程序运行时内存占用过高或被杀死。
解决方案:
- 减少回溯天数:
--lookback_days 365(从730改为365) - 减少输出数量:
--top_n 20(从50改为20) - 先运行单个算法:
bash python3 scripts/i2i_session_w2v.py # 内存占用较小 - 跳过Swing算法(内存占用最大):
bash python3 run_all.py --skip-i2i
4. 运行时间过长
解决方案:
- 减少数据量:
--lookback_days 180 - 只运行特定算法:
bash python3 run_all.py --only-w2v - 考虑使用C++版本的Swing(性能提升10倍)
5. 依赖包安装失败
解决方案:
# 单独安装失败的包
pip3 install pandas sqlalchemy pymysql gensim numpy
# 或使用国内镜像
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
6. Redis连接失败
问题:
redis.exceptions.ConnectionError: Error connecting to Redis
解决方案:
- Redis是可选的,只影响索引加载功能
- 如果不需要Redis,可以跳过:
bash python3 run_all.py # 只运行离线任务,不加载到Redis - 如果需要Redis,确认Redis已安装并运行:
bash redis-cli ping # 应该返回 PONG
7. 输出文件为空
可能原因:
- 数据量太少(没有满足最小阈值)
- 时间范围内没有数据
- SQL查询条件过于严格
解决方案:
- 检查日志:
tail -f logs/run_all_*.log - 调整参数:
- 增加时间范围:
--lookback_days 1000 - 减少阈值:修改配置文件中的
min_interaction_count
- 增加时间范围:
- 检查数据库中是否有数据:
python # 运行简单查询测试 python3 test_connection.py
8. 权限问题
问题:
PermissionError: [Errno 13] Permission denied
解决方案:
# 给脚本添加执行权限
chmod +x install.sh run_all.py
# 确保有写入权限
chmod 755 output/ logs/
9. Python版本问题
要求:
Python 3.7+
检查版本:
python3 --version
如果版本过低,需要升级Python
10. 编码问题
问题:
UnicodeDecodeError: 'utf-8' codec can't decode byte...
解决方案:
确保所有文件使用UTF-8编码,特别是配置文件和输出文件。
调试技巧
1. 查看详细日志
tail -f logs/run_all_*.log
2. 运行单个任务(便于调试)
python3 scripts/i2i_swing.py --lookback_days 30 --top_n 10
3. 使用较小的数据量测试
python3 run_all.py --lookback_days 30 --top_n 10
4. 检查中间结果
ls -lh output/
head -n 20 output/i2i_swing_*.txt
获取支持
如果以上方法都无法解决问题:
查看文档:
README.md- 详细说明DATABASE_SETUP.md- 数据库配置QUICKSTART.md- 快速开始
查看日志:
logs/目录下的所有日志文件
简化测试:
- 先运行
test_connection.py - 再运行单个脚本
- 使用小数据量测试
- 先运行
记录错误信息:
- 完整的错误堆栈
- 使用的命令
- 配置文件内容
提示:大部分问题都与数据库字段名不匹配有关,请优先查看 DATABASE_SETUP.md。