1

好的,所以。我的 MediaWiki 从美国的服务器迁移到德国的服务器,结果适得其反,可怕的是,我最终只得到了数据库。整个 mediawiki 安装已不可挽回地丢失。

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

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

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

4

2 回答 2

7

我建议简单地升级到最新版本,而不用担心你之前的版本。

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 没有运行,请检查include/DefaultSettings.php 中的$wgVersion

于 2013-09-29T12:49:46.383 回答
0

不幸的是,似乎并不总是可以从数据库中获取(正确的)版本号。如果您可以访问 php 文件的备份,它会更容易和更可靠。

我使用 PostgreSQL 安装了 2 个 Mediawiki。一个在旧的 Debian 8 Jessie 上,另一个在最近升级到 v. 10 Buster 的 Debian 上。在这两种情况下,仅查询数据库都不起作用。但是“grepping”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 的答案中建议的查询应该给出正确的结果,但由于某种原因不在这台机器上。它提供了 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
于 2020-12-05T10:49:44.533 回答