mysql - 错误无法在组件 :Sonar Exception? 上保存公制 pdf 数据的度量

标签 mysql linux maven sonarqube

我有一个 Jenkins 作业,它在一个由多个模块组成的 Maven 项目上运行 SonarRunner,我正在使用 msql db 进行 Sonar 。构建失败显示

[错误] 无法在组件 [com.XX:xxx-parent] 上保存指标 [pdf-data] 的度量

[ERROR] 无法在项目 XXX-parent 上执行目标 org.codehaus.mojo:sonar-maven-plugin:2.3.1:sonar (default-cli):无法保存指标 [pdf-data] 的度量组件 [com.XX:XXX-parent]: [错误] ### 更新数据库时出错。原因:com.mysql.jdbc.PacketTooBigException:查询数据包太大(3676748 > 1048576)。您可以通过设置 max_allowed_pa​​cket' 变量在服务器上更改此值。 [ERROR] ### 错误可能涉及org.sonar.api.database.model.MeasureMapper.insertData-Inline [ERROR] ### 设置参数时出错 [错误] ### SQL: 插入 measure_data (measure_id, snapshot_id, data) VALUES (?, ?, ?) [错误] ### 原因:com.mysql.jdbc.PacketTooBigException:查询数据包太大(3676748 > 1048576)。您可以通过设置 max_allowed_pa​​cket' 变量在服务器上更改此值。 [错误] -> [帮助 1] org.apache.maven.lifecycle.LifecycleExecutionException:无法执行目标 org.codehaus.mojo:sonar-maven-plugin:2.3.1:sonar (default-cli) on project XXX-parent: Unable to save measure for metric [pdf -data] 组件 [com.XXX:XXX-parent] 在 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_pa​​cket 设置。

You can change this value on the server by setting the max_allowed_packet' variable.

可以找到说明here .

使用所需的设置启动服务器,即 mysqld --max_allowed_pa​​cket=16M 最大 16 MB。

或者更永久地,通过在 [mysqld] 部分下添加设置来修改配置文件(Linux 系统上的 my.cnf,Windows 上可能是 my.ini)。

[mysqld]
max_allowed_packet=16M

关于mysql - 错误无法在组件 :Sonar Exception? 上保存公制 pdf 数据的度量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24675849/

相关文章:

mysql - 从多个表中选择与 JOIN 比较

regex - 如何将 "ip"字符串 grep 到文件中?

Maven:POM 模块和子模块层次结构

java - 无法在可部署的 .jar 中加载主类

JUNIT期间Spring Maven依赖问题

Mysql 查询从逻辑有缺陷的表问题中获取免费汽车

mysql - 设置了 key_block_size 的 MyISAM 表

mysql - 所有带有子查询的 sql,且不存在

linux - 需要命令或脚本从 Unix/Linux 中的文件段落中仅获取特定行

linux文本电影,减去一列的数字使用其他列或添加一个特定数字?