MySQL の utf8_unicode_ci と utf8_general_ci の違いで出たエラー
自分で作ったストアドを呼ぶと以下のようなエラーが出た。
ERROR 1267 (HY000): Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='
単純に文字コードが違うから出てるよう。
mysql> SHOW VARIABLES LIKE '%collation%'; +----------------------+-----------------+ | Variable_name | Value | +----------------------+-----------------+ | collation_connection | utf8_general_ci | | collation_database | utf8_general_ci | | collation_server | utf8_general_ci | +----------------------+-----------------+ 3 rows in set (0.01 sec)
collcation が utf8_general_ci で作ったデータベースとテーブル定義が utf8_unicode_ci になっていた。
以下のようにしたらいけた。
CREATE DATABASE `log` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE IF NOT EXISTS `log` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT , `log_level` INT(10) UNSIGNED NOT NULL , `log` TEXT NULL DEFAULT NULL , `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , PRIMARY KEY (`id`) ) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;
文字コードのお話なのでストアドは全く関係なかった…。
参考:mysql の utf8_general_ci と utf8_unicode_ci の混在でエラー | とりあえず残しとくか