触发器中用到了STRCMP函数来比较字符串,结果在执行到该函数的时候,遇到了如下错误:
ERROR 1267 (HY000): Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (gb2312_chinese_ci,COERCIBLE) for operation 'strcmp'比较的字符串确实有中文,如0=STRCMP(name,'小王'),这样的问题应该如何解决?
ERROR 1267 (HY000): Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (gb2312_chinese_ci,COERCIBLE) for operation 'strcmp'比较的字符串确实有中文,如0=STRCMP(name,'小王'),这样的问题应该如何解决?
解决方案 »
- 关于提取二级分类下N条数据的问题(整了三天了,没整出来,不行了,向大伙求教)
- 一个64位的linux操作系统,mysql是5.1,query_cache_size大约设置多少合适,设置标准是什么。
- mysql数据库中怎样实现,若表中不存在某个字段,就添加一个字段?
- 急问:mysql执行脚本的时候出现这个提示
- 大家一起来讨论一下mysql的性能管理。
- 多台服务器并联数据库应该怎么做啊?
- 急求这样的SQL语句????? 在线等待
- id为Autoincreament问题
- 高手快来,彻夜难眠
- 麻烦推荐一款linux下的mysql比较好的测试工具
- mysql 执行 SELECT http_post
- 模糊查询问题
show variables like 'char%';
+--------------------------+----------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------+
| character_set_client | gb2312 |
| character_set_connection | gb2312 |
| character_set_database | gb2312 |
| character_set_filesystem | binary |
| character_set_results | gb2312 |
| character_set_server | gb2312 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------------+
8 rows in set (0.00 sec)
NAME字段的字符集是什么
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
但是我在触发器中用select into 语句将字段中的内容复制给了变量,
在比较这个变量的时候,出现的这个问题。类似的例子如下:
DECLARE v_name varchar(128);
SELECT name INTO v_name FROM tbl WHERE id = NEW.id;
IF 0 = STRCMP(v_name, '小王')
这是什么情况呢?
SET NAMES gb2312;
SELECT name INTO v_name FROM tbl WHERE id = NEW.id;
IF 0 = STRCMP(v_name, '小王')
而从错误中collations的先后顺序也可看出,
IF 0 = STRCMP(v_name, '小王') 中,v_name是gbk_chinese_ci。但数据表tbl中的collation确实是gb2312_chinese_ci
是的,我照着试了,声明变量的时候如下:
DECLARE v_type_formatID VARCHAR(16) CHARSET 'GB2312';但问题依旧,哎!
是我疏忽了一个变量忘加了!DECLARE v_name VARCHAR(16) CHARSET 'GB2312';这样就能解决,多谢诸位!