MediaWiki内部错误

多年来,我一直在我的公司运行一个mediawiki服务器。 最近为了解决我在上传PDF时遇到的问题,我已经把我的Gentoo盒子上的所有软件(Mediawiki 1.18.1,PHP 5.4.0,PostgreSQL 9.1.3)

现在某些页面(收到大量使用的两个类别页面)返回相同的PHP错误。

警告:1377行/var/www/localhost/htdocs/includes/db/Database.php中的非法string偏移“LIMIT”

然后有5或6个关于这个错误的投诉。 然后是线路:

警告:在第177行的/var/www/localhost/htdocs/includes/resourceloader/ResourceLoaderWikiModule.php中为foreach()提供的无效参数

然后说整个事情是一个mediawiki内部错误。

然后它告诉我,最初的例外:

原始exception:发生exception'DBQueryError'消息'发生数据库错误。 你升级后忘了运行maintenance / update.php吗? 请参阅: http : //www.mediawiki.org/wiki/Manual :Upgrading#Run_the_update_script查询:SELECT COUNT(*)AS页,COUNT((CASE WHEN page_namespace = 14 THEN 1 ELSE NULL END))AS subcats,COUNT(( CASE WHEN page_namespace = 6 THEN 1 ELSE NULL END))AS文件FROM“categorylinks”,“page”WHERE cl_to ='Item_Groups'AND(page_id = cl_from)LOCK IN SHARE MODE
function:Category :: refreshCounts
错误:1错误:在“LOCK”或其附近出现语法错误
LINE 1:… E cl_to ='Item_Groups'AND(page_id = cl_from)LOCK IN SH …

我已经进入数据库,并确定当我从数据库本身运行相同的查询,我得到相同的错误和相同的结果。

是的,我已经运行了update.php函数。

我试图通过后门删除受影响的页面(手动将URL直接应用到删除表单)。 然后我使用维护脚本清除了所有归档页面(AKA,已删除页面)的数据库。 一切都无济于事。 数据库有这些页面的一些奇怪的问题,我不知道如何清除它们,以便我可以重新创build它们!

好的,我已经解决了这个问题。 事实certificate,问题是PHP 5.4.0。 我降级到PHP 5.3.10,整个事情再次完美。 出于某种原因5.4版本在与PostgreSQL接口时会导致某些问题。

如果有人知道这个原因,我肯定我不是唯一一个知道为什么会这么做的人。