Sonar-Scanner执行扫描时报错

转载自:https://blog.youkuaiyun.com/qq_33912215/article/details/88711526

问题:

用Sonar-Scanner在远端执行扫描时,遇到如下一个报错:

ERROR: Error during SonarQube Scanner execution
ERROR: Failed to upload report - An error has occurred. Please contact your administrator

上传扫描结果失败。

定位日志:

查看sonar安装目录下的logs中的web.log,里面有如下报错信息

ERROR web[AWmZRNUwXbi+lsl9AAH0][o.s.s.w.WebServiceEngine] Fail to process request http://10.0.27.13:9000/api/ce/submit?projectKey=proKey&projectName=proName
java.lang.IllegalStateException: Fail to insert data of CE task AWmd77ZUi0dEtE_V6reH
    at org.sonar.db.ce.CeTaskInputDao.insert(CeTaskInputDao.java:56)
    at org.sonar.server.ce.queue.ReportSubmitter.submitReport(ReportSubmitter.java:189)
    at org.sonar.server.ce.queue.ReportSubmitter.submit(ReportSubmitter.java:89)
    at org.sonar.server.ce.ws.SubmitAction.handle(SubmitAction.java:121)
    at org.sonar.server.ws.WebServiceEngine.execute(WebServiceEngine.java:110)
    at org.sonar.server.ws.WebServiceFilter.doFilter(WebServiceFilter.java:88)
    at org.sonar.server.platform.web.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:126)
    at org.sonar.server.platform.web.MasterServletFilter.doFilter(MasterServletFilter.java:95)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.sonar.server.user.UserSessionFilter.doFilter(UserSessionFilter.java:87)
    at org.sonar.server.user.UserSessionFilter.doFilter(UserSessionFilter.java:71)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.sonar.server.platform.web.CacheControlFilter.doFilter(CacheControlFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.sonar.server.platform.web.SecurityServletFilter.doHttpFilter(SecurityServletFilter.java:76)
    at org.sonar.server.platform.web.SecurityServletFilter.doFilter(SecurityServletFilter.java:48)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.sonar.server.platform.web.RedirectFilter.doFilter(RedirectFilter.java:61)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.sonar.server.platform.web.requestid.RequestIdFilter.doFilter(RequestIdFilter.java:63)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.sonar.server.platform.web.RootFilter.doFilter(RootFilter.java:62)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    at ch.qos.logback.access.tomcat.LogbackValve.invoke(LogbackValve.java:256)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (18307204 > 16777216). You can change this value on the server by setting the max_allowed_packet' variable.
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3681)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2512)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
    at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2079)
    at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2013)
    at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5104)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1998)
    at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136)
    at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136)
    at org.sonar.db.ce.CeTaskInputDao.insert(CeTaskInputDao.java:53)
    ... 48 common frames omitted

问题出在这里

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (18307204 > 16777216). You can change this value on the server by setting the max_allowed_packet' variable.

是说向MySQL数据库中写数据的时候超过了单次最大数据量,可通过修改MySQL中max_allowed_packet参数进行解决。

解决步骤:
1、查看MySQL数据库的配置文件mysql.cnf,里面有配置(或命令show VARIABLES like '%max_allowed_packet%';)
max_allowed_packet     = 16M
2、修改成

max_allowed_packet     = 64M
3、然后重启MySQL容器,通过命令查看如下

show VARIABLES like '%max_allowed_packet%';
å¨è¿éæå¥å¾çæè¿°

4、然后再重启sonar容器,一定要重启
5、重新执行sonar-scanner,可成功上传sonar report
6、等待sonar-server执行完分析后,即可在sonar web中查看报告。

<think>嗯,用户遇到了SonarScanner执行的错误,报错信息是“Error during SonarScanner execution”。我需要根据提供的引用信息来找出可能的原因和解决方案。首先,我应该看看用户提供的四个引用内容,里面提到了不同的错误情况。 引用[2]提到无法连接到SonarQube服务器,可能因为地址错误或权限问题。这候需要检查服务器的URL是否正确,以及用户是否有权限访问。同建议使用-X参数开启详细日志,这可能帮助用户诊断问题。 引用[3]指出需要设置sonar.java.binaries属性,指向项目的编译类文件。这说明用户的项目可能是Java项目,并且SonarScanner找不到编译后的类,导致分析失败。这候需要配置正确的路径。 引用[4]提到重启SonarQube容器并重新执行扫描,成功上传报告。这可能涉及到服务器端的问题,比如服务未正确启动或者缓存问题,重启可能解决。 接下来,我需要将这些可能的解决方案结构化,分步骤指导用户逐一排查。常见的步骤可能包括检查服务器连接、验证权限、配置编译路径、检查网络设置,以及查看日志获取更多信息。 用户可能需要按照顺序检查这些方面,先确认服务器可达,再处理权限和项目配置,最后考虑服务器状态和日志分析。另外,建议用户开启调试模式,这样能更详细地看到错误原因,便于针对性解决。</think>### SonarScanner执行报错 "Error during SonarScanner execution" 解决方案 #### 1. **检查SonarQube服务器连接** - **问题原因**:SonarScanner无法连接到SonarQube服务器,可能是地址错误、服务器未启动或网络限制[^2]。 - **解决步骤**: 1. 确认`sonar.host.url`在`sonar-project.properties`中配置正确,例如: ```properties sonar.host.url=http://localhost:9000 ``` 2. 使用`curl http://localhost:9000`测试服务器是否可达。 3. 检查防火墙或代理设置,确保端口`9000`开放。 #### 2. **验证权限和令牌** - **问题原因**:未授权访问或令牌失效。 - **解决步骤**: 1. 在SonarQube界面生成新的用户令牌(路径:`User > My Account > Security`)。 2. 在扫描命令中显式指定令牌: ```bash sonar-scanner -Dsonar.login=生成的令牌 ``` #### 3. **配置Java项目编译路径** - **问题原因**:Java项目未指定编译后的`.class`文件路径[^3]。 - **解决步骤**: 1. 在`sonar-project.properties`中添加: ```properties sonar.java.binaries=target/classes ``` 2. 确保项目已编译(如执行`mvn clean install`或`gradle build`)。 #### 4. **重启SonarQube服务** - **问题原因**:服务端缓存或临故障[^4]。 - **解决步骤**: 1. 重启SonarQube容器或服务: ```bash docker-compose restart sonarqube # 若使用Docker ``` 2. 等待服务完全启动后重试扫描。 #### 5. **启用调试模式分析日志** - **问题原因**:错误信息不明确,需详细日志定位。 - **解决步骤**: ```bash sonar-scanner -X # 输出DEBUG级别日志 ``` 根据日志中`ERROR`关键词定位具体问题(如配置错误、依赖缺失)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值