A-A+

解决wordpress illegal mix of collations错误

2017年11月09日 PHP开源系统 评论 1 条 阅读 0 views 次

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

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

  1. [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 查询的。  
  2.   
  3. [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文件应该经常看一下,否则可能后果很严重。

标签:

1 条留言  访客:1 条  博主:0 条

  1. 明月清风

    这是一个很好的教程

给我留言

Copyright © 夏日博客 保留所有权利.   Theme  Ality 冀ICP备15026943号-2

用户登录