如题,刚接手一个半茬的gerrit服务器,有一个历史的单子,一直打不开,老是提示“MissingobjectException:Missing unknown xxxxx. The page you requested was not found, or you do not have permission to view thispage.”,重启gerrit也无用。纠结了半天,决定去数据库里看看。
我们采用的数据库是gerrit默认的H2数据库,其他数据库调用方式雷同,不再赘述。请注意,数据库操作有风险,操作前需备份,而且会还原。备份备份备份(重要的事情说三遍!)gerrit可支持的数据库很多,访问数据库方法很多(比如navicat)。鉴于我们机器用了几层代理,所以我采用最原始的方式访问---命令行(命令可参考官网http://www.h2database.com/html/grammar.html)。命令行操作gerrit的H2数据库有两种入口:
1,在服务器端调用gerrit.war包的命令入口(不推荐)
这种方式操作前需要停止gerrit服务,登录服务器操作:java -jar gerrit.war gsql
2,远程ssh调用接口入口(推荐)
这种方式需要管理员权限:ssh -p 29418 address gerrit gsql
好了,连上数据库就可以操作了:
select * from changes where change_id=4;
(注意分号可不能少)
从如下截图中可以看出,这个单子的状态,把它abandon掉:
update changes set open='N',status='A' where change_id=4;
然后去gerrit看看,是不是好了~