ちょっと話題の記事

【AWS】Aurora に絵文字『utf8mb4』をINSERTできるか試してみた

2015.07.29

この記事は公開されてから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で確認しました。

20150729_MySQL_Workbench

(2015年の今、2013年の流行語を文字コード表をみながら用意するのは大変でした)

まとめ

Auroraでも問題なく特殊な文字を扱うことができました。MySQLWorkbenchも支障なく動作しますし、本当にMySQLとの互換性が高いですね。安心して日本語が含まれるデータもAuroraに格納できるのではないでしょうか。

私も前例にならってこの言葉で終わりたいと思います。

東京リージョンマダー?