我在一个全新的 PostgreSQL 9.2 数据库上安装了 Sonar 3.5.1。服务器似乎运行良好,但 sonar-runner (v2.2) 失败并出现以下错误:
Caused by: org.sonar.core.persistence.BadDatabaseVersion: The current batch process and the configured remote server do not share the same DB configuration.
- Batch side: jdbc:postgresql://10.1.0.210/sonar (postgres / *****)
- Server side: check the configuration at http://sonar.kopitoto/system
我非常有信心没有其他同时安装的 Sonar 指向同一个数据库,因为:
- 这是该组织中的第一个声纳装置,有史以来
- DB 中的值
sonar.core.id
与 Sonar 服务器返回的值相匹配:
从数据库中获取值:
sonar=# SELECT text_value FROM properties WHERE prop_key = 'sonar.core.id';
text_value
----------------
20130525192736
(1 row)
从服务器获取值:
$ curl http://sonar.kopitoto/api/server
<?xml version="1.0" encoding="UTF-8"?>
<server>
<id>20130525192736</id>
<version>3.5.1</version>
<status>UP</status>
</server>
Sonar-runner 的属性:
sonar.host.url: http://sonar.kopitoto
sonar.jdbc.driverClassName: org.postgresql.Driver
sonar.jdbc.password: *****
sonar.jdbc.schema: public
sonar.jdbc.url: jdbc:postgresql://10.1.0.210/sonar
sonar.jdbc.username: postgres
当然,密码不是五颗星,但我查了两遍。如果我稍微改变一下,跑步者会因身份验证错误而提前失败。因此排除了密码不匹配的情况。
服务器的sonar.properties
:
sonar.jdbc.username: postgres
sonar.jdbc.password: *****
sonar.jdbc.url: jdbc:postgresql://10.1.0.210/sonar
sonar.jdbc.driverClassName: org.postgresql.Driver
sonar.jdbc.schema: public
同样,上面的密码不是五颗星,但我很确定它是正确的。服务器日志没有说明错误,并显示了当我停止事物、删除数据库、创建一个空数据库,然后再次启动 Sonar 服务器时数据库模式是如何初始化的。
我错过了什么吗?
在这一点上,我认为这是 Sonar 中的一个错误(可能在 sonar-runner 中)。不幸的是,Sonar 的问题跟踪系统充斥着这样的报告,所有这些报告都以“不是错误”的解决方案关闭。我想如果我重新打开其中一个问题,我也会被同样解雇。
所以我希望我在这里真的错过了一些东西。