仅从数据库确定MediaWiki版本

时间:2013-09-29 05:09:29

标签: php sql mediawiki

好的,好的。我的MediaWiki从美国的服务器迁移到德国的服务器,这种情况非常糟糕,我最终只得到了数据库。整个mediawiki安装不可避免地丢失了。

我不记得该网站运行的MediaWiki版本,虽然它是半现代的(2012年1月之后的某个时间)。

PostgreSQL数据库已在新服务器中成功恢复。

我可以查询任何SQL来提供版本信息吗?我已尝试从1.19升级,但它给了我所有种“已存在的列”错误,并且通常会失败。

2 个答案:

答案 0 :(得分:6)

我建议您只需升级到最新版本,而不必担心之前的版本。

MediaWiki 从任何版本(1.5之后)优雅地升级到当前版本。但是,对于PostGres而言,这可能不像MySQL那样顺利,并且某些扩展也可能做得不好。

请将升级过程的任何失败报告给http://bugs.wikimedia.org

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

select max(ul_key) from updatelog where ul_key like "updatelist-%";
然而,

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

检查MediaWiki版本的最佳方法是查看 Special:Version ,或者,如果wiki未运行,请检查includes / DefaultSettings中的 $ wgVersion 。 PHP。

答案 1 :(得分:0)

不幸的是,似乎并非总是能够从数据库中获取(正确的)版本号。如果您有权访问php文件的备份,则将更加轻松,更加可靠。

我使用PostgreSQL安装了2个Mediawiki。一个在旧的Debian 8 Jessie上,一个在最近升级到v。10 Buster的Debian上。在两种情况下,仅查询数据库都不起作用。但是“抓住” Mediawiki php文件确实可以正常工作。

在带有Mediawiki版本1.19的旧Debian 8上

  • 这给出了正确的版本:
$ egrep 'wgVersion|MW_VERSION' /var/lib/mediawiki/includes/{DefaultSettings,Defines}.php
/var/lib/mediawiki/includes/DefaultSettings.php:$wgVersion = '1.19.20+dfsg-2.3';
  • 这仍然引用旧版本1.15:
$ 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-%';"

在版本为1.31的Debian 10机器上:

  • 这会在输出的最后一行给出正确的版本:
$ egrep 'wgVersion|MW_VERSION' /var/lib/mediawiki/includes/{DefaultSettings,Defines}.php
/var/lib/mediawiki/includes/DefaultSettings.php: * @deprecated since 1.35; use the MW_VERSION constant instead
/var/lib/mediawiki/includes/DefaultSettings.php:$wgVersion = MW_VERSION;
/var/lib/mediawiki/includes/Defines.php: * This replaces the the $wgVersion global found in earlier versions.
/var/lib/mediawiki/includes/Defines.php:define( 'MW_VERSION', '1.31.10' );
  • 这给出了与另一台机器相同的错误旧版本:
$ 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