我下载了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
我只看到“当前版本太旧了。请先升级到长期支持版本。”但......升级什么?
答案 0 :(得分:15)
这与您的数据库品牌或版本无关,但使用SonarQube平台的版本,您需要从升级。从4.5版开始,该平台的新版本仅从上一个长期支持版本开始累积数据库升级脚本。所以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 - &gt; 4.5.7 - &gt; 5.6.6
12月1日更新
6.7是当前的LTS,因此从假设的3.2安装开始的当前升级路径将是:
3.2 - &gt; 4.5.7。 - &GT; 5.6.7 - &gt; 6.7
可以跳过中间版本。
答案 1 :(得分:0)
以防万一在安装新鲜 SonarQube时遇到同样的问题。似乎每次由于某些其他错误导致安装过程无法完成数据库表的创建时,您必须删除表。
我尝试安装面临此问题的最新版本(7.0)。我切换到LTS版本(6.7.3),但仍然是同样的错误。然后我删除了之前创建的所有表,然后我遇到了另一个问题,即binlog_format必须是基于行的。在纠正了这个问题之后,我又遇到了同样的错误&#34;版本太旧&#34;。
查看logs / web.log文件以查找错误。修复错误后,删除表并让进程重新创建数据库。