我有一个Jenkins的工作,在一个Maven项目上运行SonarRunner,这个项目由几个模块组成,我使用msql db作为sonar。生成失败,显示
[错误]无法在组件[com.XX:xxx parent]上保存度量值[pdf data]
[错误]无法在项目XXX上执行目标org.codehaus.mojo:sonar maven插件:2.3.1:sonar(默认cli):无法在组件[com.XX:XXX parent]上保存度量值[pdf data]:
[错误]####更新数据库时出错。原因:com.mysql.jdbc.PacketTooBigException:用于查询的数据包太大(3676748>1048576)。您可以通过设置max_allowed_packet'变量在服务器上更改此值。
[错误]####错误可能涉及org.sonar.api.database.model.MeasureMapper.insertData-Inline
[错误]####设置参数时出错
[错误]####SQL:插入测量数据(测量id、快照id、数据)值(?)?, ?, ?)
[错误]####原因:com.mysql.jdbc.PacketTooBigException:用于查询的数据包太大(3676748>1048576)。您可以通过设置max_allowed_packet'变量在服务器上更改此值。
[错误]>[帮助1]
org.apache.maven.lifecycle.LifecycleExecutionException:未能在项目XXX上执行目标org.codehaus.mojo:sonar maven plugin:2.3.1:sonar(默认cli):无法在组件[com.XXX:XXX parent]上保存度量值[pdf 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)
最佳答案
我也遇到了这个错误。SonarQube使用的MySQL数据库默认情况下只允许高达1 MB的LOB内容,并且它试图保存的内容大于错误消息中所述的内容。
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。或者更永久地修改配置文件(Linux系统上的my.cnf,Windows系统上的my.ini),方法是在
[mysqld]
部分添加设置。[mysqld]
max_allowed_packet=16M