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 の混在でエラー | とりあえず残しとくか