我有一个Jenkins Job在一个Maven项目上运行SonarRunner,该项目由几个模块组成,我使用msql db for sonar。构建失败,显示
[错误]无法在组件[com.XX:xxx-parent]上保存度量[pdf-data]的度量
[错误]无法执行目标org.codehaus.mojo:sonar-maven-plugin:2.3.1:项目XXX-parent上的声纳(default-cli):无法保存指标[pdf-data]的度量组件[com.XX:XXX-parent]: [错误] ###更新数据库时出错。原因:com.mysql.jdbc.PacketTooBigException:查询的数据包太大(3676748> 1048576)。您可以通过设置max_allowed_packet'来更改服务器上的此值。变量。 [错误] ###错误可能涉及org.sonar.api.database.model.MeasureMapper.insertData-Inline [ERROR] ###设置参数时发生错误 [错误] ### SQL:INSERT INTO measure_data(measure_id,snapshot_id,data)VALUES(?,?,?) [错误] ###原因:com.mysql.jdbc.PacketTooBigException:查询包太大(3676748> 1048576)。您可以通过设置max_allowed_packet'来更改服务器上的此值。变量。 [错误] - > [帮助1] org.apache.maven.lifecycle.LifecycleExecutionException:无法执行目标org.codehaus.mojo:sonar-maven-plugin:2.3.1:项目XXX-parent上的sonar(default-cli):无法保存度量标准[pdf组件[com.XXX:XXX-parent]上的-data] 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 在org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 在org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 在org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 在org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 在org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 在org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
答案 0 :(得分:1)
我也遇到了这个错误。 SonarQube使用的MySQL数据库默认情况下允许LOB内容高达1 MB,并且它尝试保存的内容大于错误消息中所述的内容。
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (3676748 > 1048576).
解决方案是您需要增加SonarQube正在使用的MySQL实例的max_allowed_packet
设置。
You can change this value on the server by setting the max_allowed_packet' variable.
可以找到说明here。
使用所需的设置启动服务器,即mysqld --max_allowed_packet=16M
最多16 MB
或者更永久地,通过添加[mysqld]
部分下的设置来修改配置文件(Linux系统上的my.cnf,可能是Windows上的my.ini)。
[mysqld]
max_allowed_packet=16M