-
Recent Posts
Recent Comments
Categories
Blogroll
Archives
- February 2022
- April 2021
- December 2013
- November 2013
- January 2013
- December 2012
- June 2012
- May 2012
- February 2012
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- January 2010
- December 2009
- October 2009
- August 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- December 2006
- November 2006
- October 2006
- July 2006
- June 2006
- May 2006
- April 2006
- March 2006
- February 2006
- January 2006
- December 2005
Meta
Amazon
Tag Archives: mediawiki
【转载】安装mediawiki中文版时遇到的问题以及解决办法
我遇到的问题是保存时候就500,用这个方法修正后正常,具体做法是
function doQuery( $sql ) {
mysql_query(“SET NAMES utf8;”, $this->mConn);//加到这里
if( $this->bufferResults() ) {
$ret = mysql_query( $sql, $this->mConn );
} else {
$ret = mysql_unbuffered_query( $sql, $this->mConn );
}
return $ret;
}
最开始打算安装一个汉化版,于是下载了mediawiki1.91汉化版,安装完成之后发现能够访问首页,但是编辑内容的时候,就出现如下提示:
数据库错误
数据库指令语法错误。这可能是由于非法搜索指令所引起的(见 $5),也可能是由于软件自身的错误所引起。最后一次数据库指令是:
(SQL query hidden)
来自于函数 “Article::insertOn”。 MySQL返回错误 “1062: Duplicateentry 0-?? for key 2 (localhost)”。
我很纳闷,所有安装步骤都是按照说明进行的,也没有提示发现什么错误,但是为什么就是无法保存编辑呢?于是又试验了很多次。问题依旧。
刚开始我怀疑是不是汉化版的原因,于是我去mediawiki上看,发现最新版mediawiki1.10已经能够非常好的支持中文了。于是我就去下载安装了mediawiki1.10版。却发现仍然无法保存编辑的内容。
一次无意中,我却发现,英文版的不存在这个问题。于是突然想到可能还是数据库编码的问题。上网查了查资料,发现安装中文版的mediawiki有可能在首次访问首页的时候出现如下错误:
数据库指令语法错误。这可能是由于非法搜索指令所引起的(见), 也可能是由于软件自身的错误所引起。最后一次数据库指令是: (SQLquery hidden) 来自于函数 “LinkCache::addLinkObj”。 MySQL返回错误”1267: Illegal mix of collations(gb2312_bin,IMPLICIT) and(latin1_swedish_ci,COERCIBLE) for operation =(localhost)”。
需要在includesDatabase.php,找到数据库查询子函数:functiondoQuery,在进行查询前加入以下语句:mysql_query(“SET NAMESutf8;”, $this->mConn );
问题解决!
问题分析:
因为mediawiki是一个国际化的项目,所以可能其内部数据传递都是使用utf-8形式,而我发现我的数据库的默认整理字符集为gb2312,因此建立好数据库以及查询都是使用gb2312编码。所以导致mediawiki查询出现异常。所以在database.php中指定查询、传输字符集为utf8,问题就解决了。
我猜想如果数据中默认格式是utf-8,则可能不会出现以上问题。
本文可以自由转载,转载时请保留全文并注明出处。作者:仲子
原文链接:http://www.wangzhongyuan.com/archives/138.html