Aurora Serverless MySQL(5.6) で日本語データを扱えるようにする


文字コードを変えよう

Aurora Serverless を作ってみたものの、
latinという文字コード(character set)が標準で
日本語や🍺を扱えなかったので使えるようにする。

環境(2019/12/19)

  • Aurora Serverless
    • MySQL
    • aurora 5.6

設定方法

パラメータグループを作成

RDS > パラメータグループ
画像はAurora Serverless むけの設定なので注意。

パラメータを設定

上部の「パラメータを編集」を押下し、以下のように設定していく

character_set

ただの utf8 だとこういうふうになるので、utf8mb4 を選択。

character_set_client = utf8mb4
character_set_connection = utf8mb4
character_set_database = utf8mb4
character_set_results = utf8mb4
character_set_server = utf8mb4

index column size の拡張(optional)

utf8mb4 を設定して、 varchar(255) のキーカラムとか作ると
mysql Index column size too large. The maximum column size is 767 bytes.
と、こういう理由で怒られる。

そんな長いキーカラム作るなよって話もあるんだけど、
そういうの気にせずに typeorm から使いたいのでその制限を拡張する。

innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = 1

拡張したindex column sizeを使うために

CREATE文で、 ROW_FORMAT=DYNAMIC を指定する必要があった。

CREATE TABLE `retweet` (`tweetId` varchar(255) NOT NULL, ...) ENGINE=InnoDB ROW_FORMAT=DYNAMIC

パラメータグループを反映

対象のデータベースの「変更」から、作成したパラメータグループを選択して保存
しばらくすると反映されるはず

結果の確認

show variables like "character%" すると見える

なんか utf8mb4 じゃないけどまあ問題なく使えてるから大丈夫なんでしょう。。