码迷,mamicode.com
首页 > 数据库 > 详细

mysql 与 memcache 字段名后面有空格时会产生什么问题(转)

时间:2015-07-14 17:45:03      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

同事下午遇到一问题,MySQL 和 Memcached 对于同一个key,不能对应起来。最终原因是:PHP将key写入MySQL数据库之前,没有经过trim()过滤首尾空格(关键是尾部空格),结果:

  1、MySQL的varchar、char类型字段,SELECT .... WHERE 查询时忽略字段的尾部空格。例如varchar类型字段uidcode中,存储的含有尾部空格的内容“rewinx ”,通过以下三种方式均可查询到:

  技术分享

  在MySQL手册第“11.4.1. CHAR和VARCHAR类型”节中写道(http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#char):请注意所有MySQL校对规则属于PADSPACE类。这说明在MySQL中的所有CHAR和VARCHAR值比较时不需要考虑任何尾部空格。请注意所有MySQL版本均如此,并且它不受SQL服务器模式的影响。



  2、PHP 的 Memcache 扩展,则在set、get时,自动将key中的空格,转换成了半角下划线“_”。当然,直接通过 Memcached 协议来读取,key值“rewinx ”就要写成“rewinx_”了。

  示例:testmc.php

  1. <?php  
  2. $memcache_obj = new Memcache;  
  3. $memcache_obj->connect(‘192.168.8.34‘, 11211);  
  4. $memcache_obj->set(‘rewinx ‘, ‘hello world‘);  
  5. echo $memcache_obj->get(‘rewinx ‘)."\r\n";  
  6. ?>  

  技术分享

 

From:  http://zyan.cc/mysql_memcached_space/

mysql 与 memcache 字段名后面有空格时会产生什么问题(转)

标签:

原文地址:http://www.cnblogs.com/wumingcong/p/4645776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!