いーっつも忘れて過去の手順書を確認するので、ここに記載する! 新しいパラメータグループ作った後に最低限設定するのは以下。
- UTF8MB4 を利用する
- InnoDB のカラム幅を 3072 だか 3074 いっぱいまで拡張する
- フレームワークなどからのアクセスで時刻補正されるとは限らないので、DB 内の時間も Tokyo にする
- per_table は標準で
1
だった。
設定する値について
だいぶわかりやすかったのはここかなあ、公式読むのが一番だけど、探しづらいんよね。
character_set_filesystem について
これはもう utf8 系ならなんでもいいと思ってたんだけど、気になったので調べた。 5.6 のドキュメントだけど 5.7 も 8 もそう変わらんじゃろうおそらく。
ファイルシステムの文字セット。この変数は、LOAD DATA INFILE および SELECT ... INTO OUTFILE ステートメントや LOAD_FILE() 関数などのファイル名を参照する文字列リテラルを解釈するために使用されます。このようなファイル名は、ファイルを開くよう試行する前に character_set_client から character_set_filesystem に変換されます。デフォルト値は binary で、変換が行われないことを意味します。マルチバイトファイル名が許可されるシステムについては、別の値が適切な場合もあります。たとえば、システムが UTF-8 を使用してファイル名を表現する場合、character_set_filesystem を 'utf8' に設定します。
重要なのは、 ファイルを開くよう試行する前に character_set_client から character_set_filesystem に変換されます。 の部分で、 character_set_filesystem
が binary
でも、 character_set_client
に何か入っていれば、その形式になっている、ということになる。
ので、 character_set_client
を設定した場合は、 character_set_filesystem
に binary
とするくらいなら揃えたほうが良いのではないか、という気がしている。
そもそも Unix / Linux だと最近の locale 標準は .UTF8
だと思われるので、上記の通り utf8
決め打ちで良いのでは? 良いか。