Recently I restored some older MySQL 5.1 database. In the meantime some minor patches were applied and suddenly I received an error (while calling from a java app):
MySQL Database Error: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation …
Usually my tables are all created (something) like this:
create table apl_users (usr_id int(10) unsigned not null auto_increment primary key ,usr_login varchar(40) not null ,usr_password varchar(40) not null ,usr_name varchar(80) ,index (usr_login) ) engine=InnoDB default charset=utf8;
And a stored procedure who uses this is not really fancy:
create procedure sp_get_usr( in p_in_usr_login varchar(40) ) begin select usr_id , usr_login , usr_password , usr_name from apl_users where usr_login = p_in_usr_login; end;
But somehow (after an upgrade) I got the error mentioned above. After some experimenting on how to collate, I found out maybe it has something to do with the database settings itself (for some odd reason, a bugmantis installation in the past was defaulted to a latin_swedish character set; I’d never paid much attention to that). So I recreated the database from:
create database my_database;
to:
create database my_database default character set 'utf8' collate 'utf8_general_ci';
An now, so far (the fat lady is not singing yet), no errors calling stored procedures from my Java application…