带有MySQL 5.1问题的Sonar 2.13.1

时间:2012-02-07 21:14:02

标签: mysql sonarqube

我们是Sonar的新手,刚刚下载了v2.13.1并开始使用我们的项目。它很棒,直到它开始慢慢运行,我意识到这是因为我们仍在运行包含的Derby。我们在同一个盒子上运行MySQL Server 5.1(以及TeamCity CI),所以我按照步骤设置MySQL。

  • 我跑extras\database\mysql\create_database.sql来创建声纳用户并分配权限。
  • 我更新了conf\sonar.properties以包含:

    sonar.jdbc.url:                            jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
    sonar.jdbc.driverClassName:                com.mysql.jdbc.Driver
    sonar.jdbc.validationQuery:                select 1
    
  • 我重新启动了Sonar服务器,并从日志中看到数据库表已创建,我可以通过浏览数据库来独立确认。

  • 当我启动服务器时,我在日志中得到以下内容:

    2012.02.07 13:50:58 INFO  o.s.c.p.Database  Create JDBC datasource
    2012.02.07 13:51:01 INFO  org.sonar.INFO  Initializing Hibernate
    2012.02.07 13:51:11 INFO  org.sonar.INFO  Start services...
    
  • 当我运行我的TeamCity配置执行“mvn clean install”后跟“mvn sonar:sonar”目标(之前在Derby下工作)时,我们的构建成功完成,但Sonar死于以下信息:

    [14:11:24] [west-chai:my-project] [INFO] --- sonar-maven-plugin:2.0:sonar (default-cli) @ my-project ---
    [14:11:26] [west-chai:my-project] [INFO] Sonar version: 2.13.1
    [14:11:29] [west-chai:my-project] [WARN] [14:11:29.403] Derby database should be used for evaluation purpose only
    [14:11:29] [west-chai:my-project] [INFO] [14:11:29.403] Create JDBC datasource
    [14:11:30] [west-chai:my-project] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar (default-cli) on project my-project: Can not execute Sonar
    [14:11:30] [INFO] ------------------------------------------------------------------------
    [14:11:30] [INFO] Reactor Summary:
    [14:11:30] [INFO] 
    [14:11:24] [west-chai:my-project] [INFO] --- sonar-maven-plugin:2.0:sonar (default-cli) @ my-project ---
    [14:11:26] [west-chai:my-project] [INFO] Sonar version: 2.13.1
    [14:11:29] [west-chai:my-project] [WARN] [14:11:29.403] Derby database should be used for evaluation purpose only
    [14:11:29] [west-chai:my-project] [INFO] [14:11:29.403] Create JDBC datasource
    [14:11:30] [west-chai:my-project] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar (default-cli) on project my-project: Can not execute Sonar
    [14:11:30] [INFO] ------------------------------------------------------------------------
    [14:11:30] [INFO] Reactor Summary:
    [14:11:30] [INFO] 
    [14:11:30] [INFO] PROJECT COMPONENT 1 ................... FAILURE [34.679s]
    [14:11:30] [INFO] PROJECT COMPONENT 2 ................... SKIPPED
    ...
    [14:11:30] [INFO] PROJECT COMPONENT N ................... SKIPPED
    [14:11:30] [INFO] ------------------------------------------------------------------------
    [14:11:30] [INFO] BUILD FAILURE
    [14:11:30] [INFO] ------------------------------------------------------------------------
    [14:11:30] [INFO] Total time: 41.809s
    [14:11:30] [INFO] Finished at: Tue Feb 07 14:11:30 CST 2012
    [14:11:31] [INFO] Final Memory: 31M/92M
    [14:11:31] [INFO] ------------------------------------------------------------------------
    [14:11:31] [ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar (default-cli) on project my-project: Can not execute Sonar: PicoLifecycleException: method 'public final org.sonar.core.persistence.DefaultDatabase org.sonar.core.persistence.DefaultDatabase.start()', instance 'org.sonar.batch.bootstrap.BatchDatabase@1d4d6a, java.lang.RuntimeException: wrapper: Fail to connect to database: Cannot create PoolableConnectionFactory (java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused: connect.) -> [Help 1]
    [14:11:31] [ERROR] 
    [14:11:31] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [14:11:31] [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [14:11:31] [ERROR] 
    [14:11:31] [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [14:11:31] [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
    [14:11:31] Process exited with code 1
    [14:11:31] [Publishing artifacts] Paths to publish: [E:\apps\TeamCity\server\buildAgent\temp\buildTmp\.tc-maven-bi\maven-build-info.1.xml.gz => .teamcity]
    [14:11:31] [Publishing artifacts] Sending files
    [14:11:31] Step Sonar (Maven) failed
    [14:11:31] Waiting for 38 service processes to complete
    [14:11:31] Sending build.finish.properties.gz file
    [14:11:31] Paths to publish: [MyProject\Mainline\MyApp\target\chai.war, MyProject\Mainline\MyComponent\MyComponent-service\target\MyComponent.war]
    [14:11:31] Sending files
    [14:11:35] Build finished
    [14:11:30] [INFO] ------------------------------------------------------------------------
    [14:11:30] [INFO] BUILD FAILURE
    [14:11:30] [INFO] ------------------------------------------------------------------------
    [14:11:30] [INFO] Total time: 41.809s
    [14:11:30] [INFO] Finished at: Tue Feb 07 14:11:30 CST 2012
    [14:11:31] [INFO] Final Memory: 31M/92M
    [14:11:31] [INFO] ------------------------------------------------------------------------
    [14:11:31] [ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar (default-cli) on project my-project: Can not execute Sonar: PicoLifecycleException: method 'public final org.sonar.core.persistence.DefaultDatabase org.sonar.core.persistence.DefaultDatabase.start()', instance 'org.sonar.batch.bootstrap.BatchDatabase@1d4d6a, java.lang.RuntimeException: wrapper: Fail to connect to database: Cannot create PoolableConnectionFactory (java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused: connect.) -> [Help 1]
    [14:11:31] [ERROR] 
    [14:11:31] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [14:11:31] [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [14:11:31] [ERROR] 
    [14:11:31] [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [14:11:31] [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
    [14:11:31] Process exited with code 1
    [14:11:31] [Publishing artifacts] Paths to publish: [E:\apps\TeamCity\server\buildAgent\temp\buildTmp\.tc-maven-bi\maven-build-info.1.xml.gz => .teamcity]
    [14:11:31] [Publishing artifacts] Sending files
    [14:11:31] Step Sonar (Maven) failed
    [14:11:31] Waiting for 38 service processes to complete
    [14:11:31] Sending build.finish.properties.gz file
    [14:11:31] Paths to publish: [MyProject\Mainline\MyApp\target\chai.war, MyProject\Mainline\MyComponent\MyComponent-service\target\MyComponent.war]
    [14:11:31] Sending files
    [14:11:35] Build finished
    

后面的错误行提到端口1527,它被注释掉的Derby配置行引用。

    [14:11:31] [ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar (default-cli) on project my-project: Can not execute Sonar: PicoLifecycleException: method 'public final org.sonar.core.persistence.DefaultDatabase org.sonar.core.persistence.DefaultDatabase.start()', instance 'org.sonar.batch.bootstrap.BatchDatabase@1d4d6a, java.lang.RuntimeException: wrapper: Fail to connect to database: Cannot create PoolableConnectionFactory (java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused: connect.) -> [Help 1]

如果我注释掉上面的sonar.jdbc行并恢复以下行,那么我们的“mvn clean install”和“mvn sonar:sonar”都会成功完成。

sonar.jdbc.url:                            jdbc:derby://localhost:152/sonar;create=true
sonar.jdbc.driverClassName:                org.apache.derby.jdbc.ClientDriver
sonar.jdbc.validationQuery:                values(1)

Maven目标的配置是否与Sonar服务器直接使用的配置不同?是否有明确的方法来确定连接哪个JDBC数据源?

2 个答案:

答案 0 :(得分:7)

Sonar服务器和Maven客户端是单独配置的。

除非另有配置,否则Maven会自动假设Sonar在本地运行Derby数据库,解释您的错误。

Sonar documentation解释了Maven如何配置为支持MySQL。

答案 1 :(得分:1)

昨天(2012年4月11日)我遇到了类似的问题 1)输入:

  • teamcity 7
  • maven 3.0.4
  • 声纳2.13
  • postgresql 9
  • global maven settings.xml包含具有正确数据库设置的声纳配置文件
  • jdk 1.6.30
  • 项目构建从命令行传递确定

2)结果:

  • teamcity - 无法执行Sonar
  • 日志包含异常

    Fail to connect to database: Cannot create PoolableConnectionFactory (java.net.ConnectException : Ошибка соединения с сервером localhost на порту 1527
    

3)可能的原因:

  • TeamCity使用了错误的settings.xml

4)解决方案:

  • goto Administratioin
  • 转到左侧菜单Integrations-> Maven设置
  • 上传您的settings.xml版本(在我的情况下使用适当的Sonar设置)