SonarQube 6.7升级后读取ISSUES.LOCATIONS失败求助
解决SonarQube 6.7升级后计算引擎任务失败的问题
看起来你在Docker部署SonarQube并升级到6.7版本后,遇到了计算引擎(CE)处理报告任务时的报错,根源是无法读取ISSUES.LOCATIONS字段的损坏数据。结合你的报错信息,我整理了几个可行的解决方案:
1. 确认数据库迁移是否完整执行
首先要排查升级时的迁移脚本是否全部成功完成:
- 查看SonarQube容器的启动日志,搜索"migration"关键词,确认没有迁移失败的记录:
docker logs <你的Sonarqube容器ID或名称> | grep -i migration - 如果日志里有迁移中断或失败的信息,先解决迁移报错,再重启容器重新执行迁移。
2. 修复损坏的LOCATIONS字段数据
报错明确指向了KEE=AV9aIkjMZ-jmCeoEg-IR的问题记录,这个记录的LOCATIONS字段大概率格式不正确(SonarQube 6.7要求该字段为合法JSON):
- 连接到SonarQube的数据库,执行SQL查询找到这条记录:
SELECT kee, locations FROM issues WHERE kee = 'AV9aIkjMZ-jmCeoEg-IR'; - 检查
locations字段的值,如果是空、非JSON格式或损坏的JSON,尝试修复:- 若该问题记录不重要,直接删除:
DELETE FROM issues WHERE kee = 'AV9aIkjMZ-jmCeoEg-IR'; - 若需要保留记录,将
locations设置为合法的空JSON数组:UPDATE issues SET locations = '[]' WHERE kee = 'AV9aIkjMZ-jmCeoEg-IR';
- 若该问题记录不重要,直接删除:
- 执行完数据库操作后,重启SonarQube容器:
docker restart <你的Sonarqube容器ID或名称>
3. 验证数据库版本兼容性
SonarQube 6.7对数据库版本有严格要求:
- MySQL需5.7及以上版本
- PostgreSQL需9.3及以上版本
- Oracle需11g R2及以上版本
如果你的数据库版本不符合要求,可能导致迁移过程中数据格式异常,建议先升级数据库到兼容版本,再重新执行迁移。
4. 重新触发迁移(若之前未完成)
如果Docker容器启动时迁移脚本未完全执行,可尝试以下步骤:
- 停止SonarQube容器:
docker stop <你的Sonarqube容器ID或名称> - 备份数据库(非常重要,避免数据丢失)
- 重新启动容器,SonarQube会自动检测未完成的迁移并执行:
docker start <你的Sonarqube容器ID或名称>
注意事项
- 所有数据库操作前务必备份数据,尤其是生产环境
- 若问题涉及大量损坏的
LOCATIONS记录,可以写批量SQL修复所有格式异常的记录
内容的提问来源于stack exchange,提问作者Andrea Di Lisio
相关产品推荐
相关产品推荐

