php - MediaWiki 1.25.2 升级脚本从 1.10 失败

标签 php mysql upgrade mediawiki

我正在尝试将 mediawiki 数据库从 1.10 升级到 1.23.10(1.25.2 也是如此)。我已按照 MediaWiki 升级页面中描述的所有步骤进行操作,但脚本失败并出现以下错误:

Updating indexes to 20031107 ...A database query error has occurred.
Query: ALTER TABLE IF EXISTS `links`
 DROP INDEX l_from,
 ADD INDEX l_from (l_from)

Function: DatabaseBase::sourceFile( patch-indexes.sql )
Error: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF EXISTS `links`\x0A DROP INDEX l_from,\x0A ADD INDEX l_from (l_from)' at line 1 (localhost)

PHP Notice:  Uncommitted DB writes (transaction from DatabaseUpdater::doUpdates). in /home/max/newforum2/mediawiki-1.23.10/includes/db/Database.php on line 4147

我正在使用 PHP 5.5.9-1ubuntu4.13 (cli) 和 MySQL 5.5.44。

最佳答案

TiiJ7 said it already: The bug appears with the MediaWiki update script!

信息

  • ALTER TABLE IF EXISTS 仅适用于 PostgreSQL >=9.2。
  • 它已经通过Phabricator 报告给了维基媒体。 .

修复bug

Try to remove the IF EXISTS code part in patch-indexes.sql file in /maintenance/archives folder!

来自这里:

ALTER TABLE IF EXISTS/*$wgDBprefix*/links
 DROP INDEX l_from,
 ADD INDEX l_from (l_from);

ALTER TABLE /*$wgDBprefix*/brokenlinks
 DROP INDEX bl_to,
 ADD INDEX bl_to (bL_to);

ALTER TABLE /*$wgDBprefix*/recentchanges

为此:

ALTER TABLE /*$wgDBprefix*/links
 DROP INDEX l_from,
 ADD INDEX l_from (l_from);

ALTER TABLE /*$wgDBprefix*/brokenlinks
 DROP INDEX bl_to,
 ADD INDEX bl_to (bL_to);

ALTER TABLE /*$wgDBprefix*/recentchanges

关于php - MediaWiki 1.25.2 升级脚本从 1.10 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32912697/

相关文章:

php - 使 ERP 应用程序能够支持多个客户

java - 在Mysql或Oracle数据库中加载一个大的json文件

android - Android:升级后,SDK出现问题

pip - 升级所有过时的 pip 包丢弃失败

c# - 与c#计算机程序和java android应用程序的数据库连接

python - 使用alembic升级表时设置不同的列值

php - 具有未知键的多维数组

php - 提交表单时在php中结合strip_tags和mysql_real_escape_string

PHP 行为怪异,混淆了 HTML 标记

php - Yii 中的 session 数据未保存到数据库