php 仅从数据库确定MediaWiki版本

pb3skfrl  于 2023-03-16  发布在  PHP
关注(0)|答案(2)|浏览(169)

好吧,那么。我的MediaWiki从Uidoss的服务器迁移到德国的服务器,结果适得其反,可怕的是,我最终只得到了数据库。整个MediaWiki安装不可挽回地丢失了。
我不记得该网站运行的是什么版本的MediaWiki,尽管它是半现代的(2012年1月之后的某个时候)。
PostgreSQL数据库已在新服务器中成功恢复。
是否有任何SQL可以查询给予我版本信息?我尝试过从1.19升级,但它给了我 * 所有 * 种类的“列已经存在”错误,通常失败。

zc0qhyus

zc0qhyus1#

我建议简单地升级到最新版本,不要担心你以前有哪个版本。
MediaWiki * 应该 * 从任何版本(1.5之后)优雅地升级到当前版本。然而,在PostGres上这可能不像在MySQL上那么顺利,也有可能一些扩展做得不好。
请向http://bugs.wikimedia.org报告升级过程中的任何失败。

编辑:回答原始问题:通过查看数据库来查找MediaWiki版本的最佳方法是以下查询:

select max(ul_key) from updatelog where ul_key like 'updatelist-%';

YMMV。这不是一个官方的或推荐的版本检查。它查看一个用于记录数据库更新的表,并给你在以“updatelist”开头的条目中找到的最新版本。这些条目可能会消失,或改变外观。而且,我不确定PG是否支持我给出的LIKE语法。

检查MediaWiki版本的最佳方法是查看Special:Version,或者,如果Wiki没有运行,则检查includes/DefaultSettings.php中的**$wgVersion**。

bihw5rsg

bihw5rsg2#

不幸的是,你不能从数据库中得到正确的版本号。如果你能访问php文件的备份,那就容易多了,也可靠多了。
根据Mediawiki的版本,您可以在includes/DefaultSettings.phpincludes/Defines.php中找到版本定义。

  • includes/Defines.php包含自版本1.31起的MW_VERSION常量的定义。

例如:
define( 'MW_VERSION', '1.35.8' );

  • includes/DefaultSettings.php包含旧版本(最高约为版本1.30)的$wgVersion变量定义。

例如:
$wgVersion = '1.19.24';
$wgVersion = '1.29.3';
或者,您可以使用类似下面这样的一行程序来查找它:

grep -E 'wgVersion|MW_VERSION' /var/lib/mediawiki/includes/{DefaultSettings,Defines}.php

我有两个MediaWiki安装,使用PostgreSQL。一个在旧的Debian 8杰西上,一个在Debian最近升级到v10 Buster上。
在这两种情况下,只查询数据库都不起作用或给出错误的结果。
在带有Mediawiki 1.19版本的旧Debian 8上,这个SQL查询给出了一个更老的版本:

$ psql -U postgres -d wikidb -t -c "SELECT type, mw_version, sql_date, cdate FROM mediawiki.mediawiki_version"
 Update | 1.15.4     | $LastChangedDate: 2009-12-16 04:24:12 +1100 (Wed, 16 Dec 2009) $ | 2010-06-17 14:31:18.745713+02

而这个函数在表中没有这样的键,所以它什么也不返回:

$ psql -U postgres -t -d wikidb -c "SELECT max(ul_key) FROM updatelog WHERE ul_key LIKE 'updatelist-%';"

在Debian 10 1.31版机器上:
这会给出与另一台计算机上相同的错误旧版本:

$ psql -U postgres -d wikidb -t -c "SELECT type, mw_version, sql_date, cdate FROM mediawiki.mediawiki_version"
 Creation | 1.15.5-2squeeze5 | $LastChangedDate: 2009-03-20 12:15:41 +1100 (Fri, 20 Mar 2009) $ | 2013-05-11 11:57:22.946184+02

brightbyte's answer中建议的查询 * 应该 * 给予正确的结果,但却没有,它给出的是1.27版本,正好是升级之前的版本:

$ psql -U postgres -t -d wikidb -c "SELECT max(ul_key) FROM updatelog WHERE ul_key LIKE 'updatelist-%';"
 updatelist-1.27.4-15461109030

因此,不要使用数据库查找正确的版本
还要注意的是,在升级之后,你可能需要运行maintenance目录下的update.php来更新数据库模式,为了能够做到这一点,你需要一个工作的“LocalSettings.php”配置,对于PostgreSQL,还需要正确的php pgsql库和Apache模块。

相关问题