茨城県取手市で働くWebクリエイター馬場誠のサイト(2018/東京から茨城に移住しました)

照合順序をutf8_general_ciからutf8_unicode_ciへ変更する

MySQLにて照合順序(colllation)の変更をする機会があり、少し調べたので自分用メモ。

やりたいことは、utf8_general_ciになっているテーブル(&フィールド)を、utf8_unicode_ciにするということです。

簡単なことなのかもしれませんが、今まで途中から照合順序を変更したことが無かったので、なかなかいい機会となりました。

方法

テーブルの紹介順序は、下記のSQLで簡単に変更できました。

ALTER TABLE `テーブル名` COLLATE utf8_unicode_ci

が、、、しかし。すぐに気づかなかったのですが、これではフィールドの紹介順序は元のutf8_general_ciのまま変わらないんですね。
どうやら個別にフィールドも指定してやる必要があるようです。

ALTER TABLE `テーブル名` MODIFY COLUMN `フィールド名` VARCHAR(32) CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;

※VARCHAR(32)部分は任意の型です。元のデータ型から変更したくない場合でも、省略したらエラーになってしまうようです。ちなみにCHARACTER SET `utf8`は、もともとutf8だったからか、私の環境では省略できました。

変更したいフィールドが多いと結構大変そうですね。
変更が発生しないように、最初から適切に設定しておくことが一番なようです。

参考-テーブル作成時に照合順序を設定する方法

ちなみに、テーブル作成時に照合順序を設定する方法は、下記です。
(UTF-8/utf8_unicode_ciの場合)

CREATE TABLE `テーブル名` (
~テーブルの定義~
) DEFAULT CHARSET utf8 COLLATE utf8_unicode_ci;

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA