MySQLの文字コードにハマる
文字コードを設定するところはたくさんある
基本、これらは全部統一されていれば MySQL のコンバートに巻き込まれることは無いと思う。
だけど、今回ハマったのはDatabase を ascii にしてテーブルを utf8 で作成してしまったことが原因。
テーブルを DROP するのは惜しいので ALTER で文字コードを変えたんだけど、何回やっても何回やっても文字コードがなおらーないよー。何がいけない? 横着はやっぱりだめなの?*1
と、割と絶望感に打ちひしがれたんだけど、上のほうで書いたとおり、カラムにも文字コードは設定されているわけで、 Table に対して ALTER をかけてもカラムにまで ALTER の影響は無いので、ALTER TABLE する際には各カラムに対する変更も付けてあげなくちゃいけない。
ちなみに
テーブルやカラムの文字コードは以下の構文で確認できる。
show create table xxxx;
テーブルと各カラムで文字コードが違う場合はカラムの定義の行に文字コードの設定も表示される。逆に、同じだった場合は何も記載されず、一番最後の行にテーブルの文字コード設定が出ている(はず)。
あと、クライアントの文字コードと登録されているデータの文字コードが違うと、MySQL コマンドラインで実行した時に ??? になってしまうことがあるけど、その時は select 文など実行したいコマンドの前で
set names xxx; # xxx は utf8 等
のように明示的に使用する文字コードを指定するとうまくいくっぽい。
*1:エアーマンが倒せない(むしろ愛しの彼が振り向かないかな!)を脳内再生するが良いよ!