読者です 読者をやめる 読者になる 読者になる

MySQL Error Code: 1271 の対処

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
・・・・

というように。。。