2015年7月28日火曜日

ニフティクラウド RDB で utf8_mb4 が使えるか試してみた

概要

ここの記事を参考にニフティクラウドRDBでも utf8_mb4 が使えるか試してみました
ちなみに utf8_mb4 は 4 バイト長の utf8 文字をサポートする文字コードで emoticon (絵文字) や 第4水準漢字が使えるようになるみたいです

環境

  • Mac OS X 10.10.4
  • MySQL Client 14.14 Distrib 5.6.25
  • MySQL Server 5.6.22 (ニフティクラウド RDB)

RDBの作成

コントロールパネルから簡単に行えるので詳細は割愛します
流れだけ紹介します

  1. コントロールパネルにログインしDBサーバの一覧から「DBサーバー新規作成」
  2. 入力する内容はとりあえず適当でOK (後で utf8_mb4 を有効にした DB パラメータグループに変更します)

今回はテストなのでスペックは mini として冗長化やディスク拡張はしない最小限のスペックで作成しました
また、DB名やユーザ名も適当に指定しました

30分ほどで作成できるので待ちます

utf8_mb4 用の DB パラメータグループの作成

DBサーバーが作成できたら DB パラメータグループを作成します
今回は utf8_mb4 を設定した専用のパラメータグループを作成します
DBパラメータの一覧から「DBパラメーターグループの新規作成」として作成します
名前は「utf8mb4」とでもしておきましょう
作成できたらパラメータを変更していきます

作成した DB パラメータグループをチェックしてプルダウンから「DB パラメータグループの編集」を選択します
ここで以下4パターンのパラメータを変更します

character 系パラメータの変更

検索ボックスに「character」と入力してください
ここで表示された以下5つの項目を utf8mb4 に変更します

  • character_set_client
  • character_set_connection
  • character_set_database
  • character_set_results
  • character_set_server

変更はプルダウンの一覧から選択してください

set_character.png

collation 系パラメータの変更

次に検索ボックスに「collation」と入力してください
ここで表示された以下2つの項目を utf8mb_general_ci に変更します

  • collation_connection
  • collation_server

変更はプルダウンの一覧から選択してください

set_collation.png

skip-character-set-client-handshake パラメータの変更

3つ目は検索ボックスに「skip-character-set-handshake」と入力してください
このパラメータの値を 1 に変更します

set_handshake.png

init_connect パラメータの変更

最後に検索ボックスに「init_connect」と入力してください
このパラメータは文字列を直接入力する必要があるので「SET NAMES utf8mb4;」と入力してください

set_init_connect.png

上記の作業は一度に変更してもOKですし、1つずつ保存してから実施してもOKです
全項目が設定できたら DB パラメータグループの設定は終わりです

DB サーバの DB パラメータグループを変更する

DB サーバーの一覧に移動します
作成待ちになった DB サーバーができていれば DB パラメーターグループを変更します
DB サーバーをチェックして「設定変更」をクリックします

DB パラメーターグループを変更できる箇所があるのでプルダウンから作成した DB パラメーターグループを選択して変更を適用します

これで DB サーバーに適用されている DB パラメータグループの変更は完了しました
ただ、まだ MySQL 自体にそのパラメータが適用されていないので一度 DB サーバー自体を再起動します
これも DB サーバーをチェックして「DBサーバー再起動」を選択すればOKです
再起動は数分で完了します

MySQL クライアントで接続して動作確認してみる

今回は Mac で動作確認しています
mysqlコマンドがインストールされていない場合はbrew isntall mysqlでインストールしましょう

では接続してみましょう
接続方法は普通の MySQL と同じです

mysql -u usename -p db_name -h grobal_ip_address

username, db_name, grobal_ip_address は作成された DB サーバーの情報を入力してください
パスワードを入力して接続できればOKです

文字コードの設定を確認してみる

statusコマンドで確認してみましょう

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.6.25, for osx10.10 (x86_64) using  EditLine wrapper

Connection id:          41
Current database:       utf8mb4_test
Current user:           username@xxx.xxx.xxx.xxx
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.6.22 MySQL Community Server (GPL)
Protocol version:       10
Connection:             111.171.222.67 via TCP/IP
Server characterset:    utf8mb4
Db     characterset:    utf8
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
TCP port:               3306
Uptime:                 1 hour 31 min 41 sec

Threads: 1  Questions: 135  Slow queries: 0  Opens: 73  Flush tables: 1  Open tables: 65  Queries per second avg: 0.024
--------------

utf8mb4 になっていることが確認できます
では実際に絵文字が登録できるか試してみます

絵文字を登録してみる

まず適当にテーブルを作成しましょう

CREATE TABLE test_utf8mb4 (str VARCHAR(50)) CHARACTER SET utf8mb4;

このテーブルにデータを入れてみます
コマンドは以下の通りです
※絵文字を使用しているため画像になります

insert_emoticon.png

完了したらSELECTしてみましょう

select_emoticon.png

絵文字が登録されていることを確認できました
ちなみに utf8mb4 になっていない MySQL に対してもテストしてみたのですが、以下のように絵文字は登録されないことが確認できました

select_empty_character.png

最後に

ニフティクラウドRDBでも utf8mb4 が動くことを確認できました
サーバ側の設定はコンパネおよびターミナルでできるのですが、動作確認時の絵文字の入力が Mac じゃないとちょっと大変かもしれません
Mac の場合Shift+Cmd+Spaceで絵文字一覧がでるのでそこから選択するだけ絵文字入力できるので楽です

0 件のコメント:

コメントを投稿