この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは植木和樹@上越妙高オフィスです。本日はGenerally AvailableとなったRDS for AuroraがどれくらいMySQLと互換性があるのか興味あったので文字コードまわりを試してみました。元ネタはこちらとなります。
文字コード設定
上記で紹介したブログとまったく同じ設定がAuroraでも可能です。
- 『utf8mb4』に対応したパラメーターグループを作成する(character_set_XXXXXX)
- パラメーターグループでinit_connect = set names utf8mb4;を設定する
- 作成したパラメーターグループでAuroraインスタンスを起動する
- CHARACTER SET utf8mb4 指定でデータベースを作成する
- character set utf8mb4 指定でテーブルを作成する
MySQLと同じですね。
character_set
mysql> show variables like '%character%';
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /rdsdbbin/oscar-5.6.10a.0.369/share/charsets/ |
+--------------------------+-----------------------------------------------+
8 rows in set (0.00 sec)
init_connect
mysql> show variables like '%init_connect%';
+---------------+--------------------+
| Variable_name | Value |
+---------------+--------------------+
| init_connect | set names utf8mb4; |
+---------------+--------------------+
1 row in set (0.00 sec)
create database
mysql> CREATE DATABASE mydb CHARACTER SET utf8mb4;
Query OK, 1 row affected (0.11 sec)
create table
mysql> use mydb
Database changed
mysql> CREATE TABLE user_master (
user_id INT(10) NOT NULL,
user_name VARCHAR(100),
user_memo VARCHAR(300),
PRIMARY KEY (user_id)
) character set utf8mb4;
動作確認
テスト用スクリプト
PHPで確認用スクリプトを用意しました。動作環境は以下の通りです。
- OSX Yosemite 10.10.4
- PHP 5.5.24 (cli) (built: May 19 2015 10:10:05)
参考サイト:iOS Emoji
結果画面
iTermだと絵文字部分が重なって表示がおかしくなるのでMySQLWorkbenchで確認しました。
(2015年の今、2013年の流行語を文字コード表をみながら用意するのは大変でした)
まとめ
Auroraでも問題なく特殊な文字を扱うことができました。MySQLWorkbenchも支障なく動作しますし、本当にMySQLとの互換性が高いですね。安心して日本語が含まれるデータもAuroraに格納できるのではないでしょうか。
私も前例にならってこの言葉で終わりたいと思います。
東京リージョンマダー?