mysql调用存储过程出现Illegal mix of collations错误,检查如下,
1. 查看character_set,看是不是有不一致的,如有需改为一致
show variables where Variable_name like 'character_set%';
修改character_set_server的方法:编辑mysql安装目录下的my.ini,在[mysqld]下添加 character-set-server=utf8
2. 查看collation是不是有不一致的,如有需改为一致.
show variables where Variable_name like 'collation%';
修改数据库的collation:
alter database databasename collate utf8_general_ci
3.查看用到的表的collation是不是存在不一致的,同时需检查表的字段的collation
show table status from db_name
修改表或字段的collation,可用navicat for mysql 工具,在设计表界面中设置。
4.以上都没问题,还报错(我就是),则需重建procedure,每个字符型的参数后指定字符集
CREATE PROCEDURE `proce_test`(admin_name VARCHAR(32) charset utf8)
参考:
mysql调用存储过程出现Illegal mix of collations错误
FAQ系列 - 调用存储过程时报错 Illegal mix of collations
Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT)