22時に寝ようと思って2時に寝る。スマートフォン用の表示で見る22時に寝ようと思って2時に寝る。備忘録や日記を書いてます。5.0.310.0.31-MariaDB文字コードのutf8mb4に対応する今回、主にiOSの絵文字に対応するためにutf8mb4に変更する必要がありました。MySQLであればバージョン5.5以降でutf8mb4をサポートしています。以下がそのために行った設定です。/var/lib/mysql/mysql.sock今回、重要なのはencodingとcollationです。それぞれの大まかな意味としては、以下のとおりです。'char%';で現在の全体的なMySQLの文字コード関連の設定を参照できます。sec)utf8mb4には対応できていないので、設定する必要があります。文字コードをutf8mb4に変更する/etc/my.cnf.d/server.cnfにあたる設定ファイルを編集します。utf8mb4再起動して、文字コードが反映されたか確認してみます。sec)うまく設定が反映されているのがわかります。character_set_systemがutf8のままですが、こちらの変数はシステムの使用する文字セットで常にutf8が使用される設定のため問題ありません。試しにマイグレーションしてみる今回は新たにマイグレーションしてみることで、utf8mb4に対応できているかを確認してみます。マイグレーション生成は省略します。bytesといったエラーが出ます。bytesを解決するこのエラー自体は以下の説明が分かりやすいです。デフォルトでは最大インデックス長は767バイトですので、UTF8では255文字まで、UTF8MB4では191文字までしかインデックスを張れません。5.5.14以降からINNODB_LARGE_PREFIXオプションで最大3072バイトまで拡張できるので、そんなに大きな問題ではないです。Worksこれに対応するために、MySQLの設定ファイルにINNODB_LARGE_PREFIXオプションを追加し、インデックスのキープレフィックスを拡張します。1innodb_large_prefix主に3つの指定をしています。innodb_large_prefixを有効にする上記設定を有効にするためにinnodb_file_formatをBarracudaにするinnodb_file_per_tableを有効にする設定後、MySQLを再起動します。SUCCESS!これでおそらく、インデックスのキープレフィックスが拡張できました。テーブル作成時にオプションを追加するようにパッチを当てるkamipoさんのモンキーパッチを使い、テーブル作成時のオプションを指定します。================完了できました。endendうまく設定ができています。以上でutf8mb4対応は完了です。開発環境を構築する方法をまとめます。@azuno_mixはてなブログをはじめよう!azuuunさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?はてなブログをはじめる(無料)はてなブログとは22時に寝ようと思って2時に寝る。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。