10

我下载了 SonarQube 5.3,配置了sonar.properties文件,下载了 MSSQL 的 JDBC 驱动程序(我使用的是 SQL Server 2012 和 SQL JDBC 4.2),在我的 SQL Server 2012 实例中使用数据库创建了一个具有所有授权的用户sonar

然后我执行startSonar.bat,这会引发以下错误:

2016.01.22 13:57:57 INFO  web[o.s.s.p.ServerImpl] SonarQube Server / 5.3 / 8db783e62b266eeb0d0b10dc050a7ca50e96c5d1
2016.01.22 13:57:57 INFO  web[o.sonar.db.Database] Create JDBC data source for jdbc:sqlserver://localhost;databaseName=sonar
2016.01.22 13:57:59 ERROR web[o.a.c.c.C.[.[.[/]] Exception sending context initialized event to listener instance of class org.sonar.server.platform.PlatformServletContextListener
org.sonar.api.utils.MessageException: Current version is too old. Please upgrade to Long Term Support version firstly.
2016.01.22 13:57:59 INFO  web[jruby.rack] jruby 1.7.9 (ruby-1.8.7p370) 2013-12-06 87b108a on Java HotSpot(TM) 64-Bit Server VM 1.8.0_66-b18 [Windows 7-amd64]
2016.01.22 13:57:59 INFO  web[jruby.rack] using a shared (threadsafe!) runtime
2016.01.22 13:58:05 ERROR web[jruby.rack] initialization failed
org.jruby.rack.RackInitializationException: java.lang.NullPointerException
    at org.jruby.rack.RackInitializationException.wrap(RackInitializationException.java:31) ~[jruby-rack-1.1.13.2.jar:na]
    at org.jruby.rack.RackApplicationFactoryDecorator.init(RackApplicationFactoryDecorator.java:98) ~[jruby-rack-1.1.13.2.jar:na]
    at org.jruby.rack.RackServletContextListener.contextInitialized(RackServletContextListener.java:50) ~[jruby-rack-1.1.13.2.jar:na]
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4720) [tomcat-embed-core-8.0.18.jar:8.0.18]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5154) [tomcat-embed-core-8.0.18.jar:8.0.18]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.0.18.jar:8.0.18]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) [tomcat-embed-core-8.0.18.jar:8.0.18]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399) [tomcat-embed-core-8.0.18.jar:8.0.18]
    at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0_66]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_66]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_66]
    at java.lang.Thread.run(Unknown Source) [na:1.8.0_66]
--- and then creates a cascade of errors ---

这是sonar.properties文件中的内容:

# DATABASE
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

# Use the following connection string if you want to use SQL Auth while connecting to MS Sql Server.
# Set the sonar.jdbc.username and sonar.jdbc.password appropriately.
 sonar.jdbc.url=jdbc:sqlserver://localhost;databaseName=sonar

 # TCP port for incoming HTTP connections. Disabled when value is -1.
sonar.web.port=4950

我只看到“当前版本太旧。请先升级到长期支持版本。” 但是...升级什么?

4

2 回答 2

16

这与您的数据库品牌或版本无关,而与您. 从 4.5 版本开始,新版本的平台仅从之前的 Long Term Support 版本开始累积数据库升级脚本。所以SonarQube平台3.2版知道从1.5一路升级,但5.3只知道从4.5.x版开始更新数据库。

所以你必须先升级到 4.5.x——我推荐 4.5.7——然后升级到 5.3。

更新

5.6.7 是当前的以前的 LTS,因此假设 3.2 安装的当前升级路径将是:

3.2 -> 4.5.7 -> 5.6.6

17 年 12 月 1 日更新

6.7 是当前的 LTS,因此假设 3.2 安装的当前升级路径将是:

3.2 -> 4.5.7。-> 5.6.7 -> 6.7

可以跳过中间版本。

于 2016-01-23T14:08:05.397 回答
1

以防万一有人在安装的SonarQube 时遇到同样的问题。似乎每次安装过程由于其他错误而无法完成数据库表的创建时,您都必须删除表。

我尝试安装面临此问题的最新版本(7.0)。我切换到 LTS 版本(6.7.3),但仍然是同样的错误。然后我删除了之前创建的所有表,然后我遇到了 binlog_format 的另一个问题,它必须是基于行的。更正此问题后,我再次遇到相同的错误“版本太旧”。

查看 logs/web.log 文件以查找错误。修复错误后删除表并让进程重新创建数据库。

于 2018-04-11T11:05:25.600 回答