MySQL で、ある2つのテーブルの UNION クエリを実行していたら、
Error Code: 1271. Illegal mix of collations for operation 'UNION'
が発生してしまった。
各々のテーブルの collation が異なる時、CHAR, VARCAR の型を UNION結合した時にエラーに発生する。
テーブルを作り直せばいいのだが、もう運用していて今更作り直すわけにはいかない場合、
クエリ実行前に、以下のように(毎回)SET 文で実行すれば良いと思ったが、
SET collation_connection = utf8_unicode_ci ;
これではうまくいかなかった。
しかたなく、SELECT句で指定する列に、以下のように COLLATE句を指定
指定して動くようにする。
SELECT book_name COLLATE utf8_unicode_ci
・・・・
UNION
SELECT spbook_name
・・・・
というように。。。