テーブルのcollationを変更する
Rails(4.2.6で確認)でMySQLのテーブルを生成すると「CHARSET=utf8 COLLATE=utf8_unicode_ci」の指定が付与されます。utf8は良いのですが、COLLATEが曲者です。カタカナやひらがな、濁点の有無などを同一のものとみなしてしまいます。たとえば、tテーブルのnameという列にユニークキーを貼っていると、以下の2行目のクエリでエラーになってしまいます。
INSERT INTO t (name) VALUES ('あ');
INSERT INTO t (name) VALUES ('ア'); -- error!!
既にテーブルが生成されている場合、ALTERクエリで変更可能です。
ALTER TABLE t COLLATE utf8_general_ci;
ALTER TABLE t MODIFY name varchar(255);
collationを明示しておけば、以降作られるテーブルのcollationはこの値にセットされます。
config/database.yml
default: &default
adapter: mysql2
encoding: utf8
collation: utf8_general_ci
:
参考URL
この記事は役に立ちましたか?
- EnglishWorm.com
- SinglesFan.com
- LmLab.net
- サイトマップ
- 運営者について