2007-07-11

安装mediawiki中文版时遇到的问题以及解决办法

Posted in PHP at 0:15 Author:仲远

标签:

mediawiki是一个应用于包括WIKIMEDIA在内的许多网站的高效的PHP WIKI程序。最近在安装中文版的时候遇到了一些棘手的问题。

最开始打算安装一个汉化版,于是下载了mediawiki1.91汉化版,安装完成之后发现能够访问首页,但是编辑内容的时候,就出现如下提示:
数据库错误
数据库指令语法错误。这可能是由于非法搜索指令所引起的(见 $5), 也可能是由于软件自身的错误所引起。最后一次数据库指令是:
(SQL query hidden)
来自于函数 "Article::insertOn"。 MySQL返回错误 "1062: Duplicate entry ‘0-??’ for key 2 (localhost)"。

我很纳闷,所有安装步骤都是按照说明进行的,也没有提示发现什么错误,但是为什么就是无法保存编辑呢?于是又试验了很多次。问题依旧。

刚开始我怀疑是不是汉化版的原因,于是我去mediawiki上看,发现最新版mediawiki1.10已经能够非常好的支持中文了。于是我就去下载安装了mediawiki1.10版。却发现仍然无法保存编辑的内容。

一次无意中,我却发现,英文版的不存在这个问题。于是突然想到可能还是数据库编码的问题。上网查了查资料,发现安装中文版的mediawiki有可能在首次访问首页的时候出现如下错误:
数据库指令语法错误。这可能是由于非法搜索指令所引起的(见 ), 也可能是由于软件自身的错误所引起。最后一次数据库指令是: (SQL query hidden) 来自于函数 "LinkCache::addLinkObj"。 MySQL返回错误 "1267: Illegal mix of collations (gb2312_bin,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation ‘=’ (localhost)"。

需要在includes\Database.php,找到数据库查询子函数:function doQuery,在进行查询前加入以下语句:mysql_query("SET NAMES ‘utf8′;", $this->mConn );

问题解决!

问题分析:
因为mediawiki是一个国际化的项目,所以可能其内部数据传递都是使用utf-8形式,而我发现我的数据库的默认整理字符集为gb2312,因此建立好数据库以及查询都是使用gb2312编码。所以导致mediawiki查询出现异常。所以在database.php中指定查询、传输字符集为utf8,问题就解决了。
我猜想如果数据中默认格式是utf-8,则可能不会出现以上问题。

本文可以自由转载,转载时请保留全文并注明出处。作者:仲子
原文链接:http://www.wangzhongyuan.com/archives/138.html

本文可以自由转载,转载时请保留全文并注明出处:
转载自仲子说 [ http://www.wangzhongyuan.com/ ]
原文链接:

6 Comments »

  1. cfc4n said,

    2007年September12日 at 11:40

    哈哈,小弟安装XOOPS+MEDIAWIKI也出现这样的问题,搜下就来到这里了!
    请问,老兄的BLOG 是WORDPRESS吧?

  2. 仲远 said,

    2007年September12日 at 19:03

    嗯,是WORDPRESS:)

  3. 明蓝 said,

    2007年September17日 at 9:09

    发了邮件给你,向你咨询一下这个问题(太长了,放在评论里不是太好)。

    谢了先:)。

  4. 【转载】安装mediawiki中文版时遇到的问题以及解决办法 at gkp’s post said,

    2008年May25日 at 18:29

    […] 原文链接:http://www.wangzhongyuan.com/archives/138.html  街头通缉令 […]

  5. 安装mediawiki中文版时遇到的问题以及解决办法(转载) | Captain said,

    2010年July16日 at 16:14

    […] 原文链接:http://www.wangzhongyuan.com/archives/138.html 分类目录: Mediawiki  |  评论 (RSS)  |  Trackback […]

  6. 快速祛痘印 said,

    2011年January6日 at 23:13

    真不错,受益了

Leave a Comment

*
To prove you're a person (not a spam script), type the security text shown in the picture. Click here to regenerate some new text.
Click to hear an audio file of the anti-spam word