阅读:1812回复:0
解决wordpress illegal mix of collations错误
[tr][td]昨天发现wordpress模板根目录下的error.log文件竟然有300M之巨。error.log这个文件是专门用来记录web服务器访问错误的,如果一旦出现异常,它就会迅速记录下来,所以文件大小会突然增长很快。
打开文件后,看到错误日志记录如下: [21-Apr-2013 05:44:07] WordPress 数据库查询SELECT * FROM wpcourse_prli_links WHEREslug='awesome-flickr-gallery插件推荐.html' 时发生 Illegal mix of collations(latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) foroperation '=' 错误,这是由 require('wp-blog-header.php'),require_once('wp-load.php'), require_once('wp-config.php'),require_once('wp-settings.php'), do_action('init'),call_user_func_array, prli_redirect, prli_link_redirect_from_slug,PrliLink->getOneFromSlug, dbrc_wpdb->query,dbrc_wpdb->dbcr_query 查询的。 [21-Apr-2013 05:44:07] WordPress 数据库查询SELECT slug FROM wpcourse_prli_links WHERE slug like'awesome-flickr-gallery插件推荐.html/%' 时发生 Illegal mix of collations(latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) foroperation 'like' 错误,这是由 require('wp-blog-header.php'),require_once('wp-load.php'), require_once('wp-config.php'),require_once('wp-settings.php'), do_action('init'),call_user_func_array, prli_redirect, dbrc_wpdb->query,dbrc_wpdb->dbcr_query 查询的。 经分析,其中其实已经把问题写得比较明白了,错误名称就叫Illegal mix ofcollations,指的是在执行一段SQL数据库操作的时候,数据库的编码跟要查询文字的编码不匹配。其中一个是latin1_swedish_ci,另一个是utf8_general_ci。 而产生这个错误的表就是prli_link这个表。后来一查,发现这个表是一个叫pretty link的插件引起的。后面在phpmyadmin里手工把这个表的编码从latin1_swedish_ci转成了utf8_general_ci,错误就再也没发生过。 这里要提醒大家的是,由于很多wordpress插件都是老外编写的,所以有个别的插件很可能没有考虑到编码的问题,他们很多都是用的西方文字编码,所以有可能在中文博客上发生错误。 在wordpress根目录下的error.log文件应该经常看一下,否则可能后果很严重。 </strong> [/td][/tr] |
|