【发布时间】:2014-07-18 16:27:53
【问题描述】:
这是我第二次在使用 Sonar 3.7.4 版时遇到此问题。上一次我刚刚在一个新的 MS SQL 数据库上创建了一个新的声纳,因为之前它是在一个 H2 数据库上。所以问题暂时解决了,但今天又出现了,我得到了 Jenkins 工作的以下输出:
INFO:
------------------------------------------------------------------------ INFO: EXECUTION FAILURE INFO:
------------------------------------------------------------------------ Total time: 17.312s Final Memory: 42M/101M INFO:
------------------------------------------------------------------------ ERROR: Error during Sonar runner execution ERROR: Unable to execute
Sonar ERROR: Caused by: Expected single result, but got :
[Snapshot[resourceId=774,buildDate=2014-07-16
10:39:21.243,createdAt=2014-07-16
10:39:20.0,version=1.0-SNAPSHOT,last=true,status=P,purgeStatus=1,scope=PRJ,path=946316.,depth=1,qualifier=BRC,rootId=946316,parentId=946316,rootProjectId=773,period1Mode=previous_analysis,period2Mode=days,period3Mode=previous_version,period4Mode=<null>,period5Mode=<null>,period1Param=2014-07-16,period2Param=30,period3Param=<null>,period4Param=<null>,period5Param=<null>,period1Date=2014-07-16 10:35:47.0,period2Date=2014-06-16
10:39:20.0,period3Date=<null>,period4Date=<null>,period5Date=<null>,id=946317],Snapshot[resourceId=774,buildDate=2014-07-16
10:39:29.867,createdAt=2014-07-16
10:39:29.0,version=1.0-SNAPSHOT,last=true,status=P,purgeStatus=<null>,scope=PRJ,path=946353.,depth=1,qualifier=BRC,rootId=946353,parentId=946353,rootProjectId=970,period1Mode=previous_analysis,period2Mode=days,period3Mode=previous_version,period4Mode=<null>,period5Mode=<null>,period1Param=2014-07-16,period2Param=30,period3Param=<null>,period4Param=<null>,period5Param=<null>,period1Date=2014-07-16 10:35:47.0,period2Date=2014-06-16
10:39:29.0,period3Date=<null>,period4Date=<null>,period5Date=<null>,id=946357]]
所以快照出了点问题。我之前做了一些研究,但没有找到好的解决方案。这是 Sonar 中的一个错误,是否可以在更新的版本中解决?
解决方案
在我的声纳项目中也有“组件”(可以在 GUI 中找到)。这些组件也有快照。上面的声纳输出说它正在寻找resource_id 774。所以我选择了这个id的快照,我看到有两个is_last = 1的快照。
SELECT * FROM snapshots where project_id=774
Order by 2 desc
所以我更新了最后一个之前的那个,所以它的 is_last = 0。
UPDATE snapshots SET islast = 0 WHERE id=yoursnapshotid
旁注
这解决了问题。当我还尝试删除数据库中的一些快照(删除记录)时,我遇到了另一个问题,告诉我
“无法找到 id x 的 org.sonar.api.database.model.Snapshot”
我通过删除带有 snapshot_id x 的事件表中的事件解决了这个问题。
delete from events where snapshot_id=946316
【问题讨论】: