質問: --- **やりたいこと** phpMyAdminにて、 文字セットがutf8mb4のフィールドに格納された4バイト文字を表示したり、 INSERT・UPDATEなどをしたい --- **環境** MySQL : 5.6.17 phpMyAdmin : 3.3.0 --- **試したこと、推測など** データベース・テーブル・フィールドの各文字セットが「utf8mb4」の状態です。 my.cnfの各種設定は「utf8」のままです。 その状態で、アプリ(PHPで開発、UTF-8指定、接続はutf8mb4)からINSERTやSELECTを行うと 4バイト文字も正しく処理されていますが、 phpMyAdminでは「?」に化けて表示されますし、INSERTを行おうとすると4バイト文字のみ「????」に化けます。 この挙動から推測するに、接続時の文字セットが「utf8」のままになっているのではないかと思います。 phpMyAdminからの接続時文字セットはトップページにある 「MySQL接続の照合順序」を変更すれば良いのではないかと思ったのですが、 これを「utf8mb4_general_ci」へ変更しても改善されません。 (再ログイン等行ってみても同様でした) また、以下を実行すると ``` show variables like '%character%' ``` こうなります。 ``` ------------------------- -------------------------- character_set_client utf8 character_set_connection utf8mb4 character_set_database utf8 character_set_filesystem binary character_set_results utf8 character_set_server utf8 character_set_system utf8 character_sets_dir /usr/share/mysql/charsets/ ------------------------- -------------------------- ``` これは意図している通りなのですが、いずれかの変更が必須でしたらご指摘ください。 変更方法がそもそも違うのか、何か別の設定が必要なのか、もしくはバージョンが足りないのか...と思っています...。 あるいは全然別の原因の可能性もあるかもしれません。 作業環境の問題でサーバ側の設定やバージョンアップなどは気軽に試せない段階でして情報不足で申し訳ありませんが、 何かご存じの方がいらっしゃいましたらよろしくお願いいたします。
回答: phpMyAdminのインストールディレクトリ/libraries/database_interface.inc.phpに ``` PMA_DBI_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci';", $link, PMA_DBI_QUERY_STORE); ``` という記述があります。 ここのutf8をutf8mb4に変えてみたらどうでしょうか? 最近のバージョン(4系)にはこういう記述はありませんが、ちょっと前のバージョン(3系など)にはあるようです。 使い勝手もよくなるので、可能なら最新バージョンに上げるのも良いかもしれません。