エラーが発生した。。
General error: 1267 Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,NUMERIC) for operation ‘like’
このエラーは(utf8_general_ci,COERCIBLE)がサーバ側のコード
(latin1_swedish_ci,NUMERIC)がクライアント側のコード
ということらしい。
文字コードが違うからlikeで調べられないよっていうことっぽい?
よくわからないので参考URLなどをもとに調査。
クライアント側の文字コードをプログラムで調べるとASCIIになっていたので、
UTF-8に変換するのか?とか思ってやってみるもASCIIで取り扱われる。。
そもそもutf8_general_ciとなっているサーバ側のカラムはDATE型。
DATE型にUTF-8とかあるのかよくわからない。
型の問題なのかと思ってとりあえずカラムを文字列型に変更。
ALTER TABLE `テーブル` CHANGE COLUMN `対象カラム` `対象カラム` VARCHAR(10) NOT NULL ;
カラム側を文字列に変換したらエラーが無くなった。
でもカラムの意味としてはDATEが正しいのでカラム型を変換するのは気持ち悪い・・・。
さらに調査。。その後以下のページを発見。
Illegal Mix Of Collations While Comparing Datetime with String
selectするときにデータベース側の列をDATE_FORMATで変換してあげればいいということらしい。
とりあえず動いた!
「llegal mix of collations」のエラーは色々な原因が
考えられるややこしい問題なんだということがわかった。
■参考URL
mysql の utf8_general_ci と utf8_unicode_ci の混在でエラー
Illegal mix of collations:ほんとに漢字コードの問題はややこしい ・・・ 【MySQL】
ω・)。○(思いつき広場 Illegal mix of collations
MYSQLへの接続を永久UTF8化:Illegal mix of collations
concrete5の検索ブロックで mysql error: Illegal mix of collations for operation ‘like’
Illegal Mix Of Collations While Comparing Datetime with String
MySQL DATE_FORMAT(date,format)