解决wordpress illegal mix of collations错误

昨天发现wordpress根目录下的error.log文件竟然有300M之巨。error.log这个文件是专门用来记录web服务器访问错误的,如果一旦出现异常,它就会迅速记录下来,所以文件大小会突然增长很快。

打开文件后,看到错误日志记录如下:

[21-Apr-2013 05:44:07] WordPress 数据库查询 SELECT * FROM wpcourse_prli_links WHERE slug=’awesome-flickr-gallery插件推荐.html’ 时发生 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation ‘=’ 错误,这是由 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) for operation ‘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 of collations,指的是在执行一段SQL数据库操作的时候,数据库的编码跟要查询文字的编码不匹配。其中一个是latin1_swedish_ci,另一个是utf8_general_ci。

而产生这个错误的表就是prli_link这个表。后来一查,发现这个表是一个叫pretty link的插件引起的。后面在phpmyadmin里手工把这个表的编码从latin1_swedish_ci转成了utf8_general_ci,错误就再也没发生过。

这里要提醒大家的是,由于很多wordpress插件都是老外编写的,所以有个别的插件很可能没有考虑到编码的问题,他们很多都是用的西方文字编码,所以有可能在中文博客上发生错误。

在wordpress根目录下的error.log文件应该经常看一下,否则可能后果很严重。

 

WordPress教程网

老伍



8 thoughts on “解决wordpress illegal mix of collations错误

发表评论

电子邮件地址不会被公开。

*