質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

  • MySQL

    7415questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • phpMyAdmin

    831questions

    phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

phpMyAdminの「接続時の文字セット(照合順序)」が変更されない?

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,125

takushi168

score 210


やりたいこと

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/
------------------------- --------------------------


これは意図している通りなのですが、いずれかの変更が必須でしたらご指摘ください。

変更方法がそもそも違うのか、何か別の設定が必要なのか、もしくはバージョンが足りないのか…と思っています…。
あるいは全然別の原因の可能性もあるかもしれません。
作業環境の問題でサーバ側の設定やバージョンアップなどは気軽に試せない段階でして情報不足で申し訳ありませんが、
何かご存じの方がいらっしゃいましたらよろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ijufumi

    2016/09/21 15:10

    PHPで作っているアプリでは、特にエンコードの設定はしてないんですか?
    あと、MySQLで「show variables like '%character%'」を実行した結果はどんな感じでしょうか?
    「character_set_client」や「character_set_connection」はutf8mb4になっていますか?

    キャンセル

  • takushi168

    2016/09/21 15:31 編集

    ありがとうございます。
    本文にも追記しましたが、
    アプリはUTF-8で開発(接続文字コードはutf8mb4としており、4バイト文字も正しく動作します)
    、「character_set_connection」のみutf8mb4 となっています。

    キャンセル

回答 2

checkベストアンサー

0

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系など)にはあるようです。
使い勝手もよくなるので、可能なら最新バージョンに上げるのも良いかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/09/21 16:36

    ありがとうございます!

    ファイルは参照する権限すらありませんでした…orz
    また後日になってしまいますが、サーバー管理者に問い合わせて確認してみます。

    しかし、最新バージョンに上げるのが一番良いかもしれませんね。
    こちらもすぐにどうこうできる点ではないのですが、検討してみます。

    キャンセル

  • 2016/10/04 10:08

    解決いたしました!
    結論としては、4.x系にバージョンアップすることとなりました。
    phpMyAdminのコードを見てみると確かにご指摘いただいた部分が問題でして、
    コードを直してしまうかバージョンアップするか…で検討し後者となりました。

    ご回答ありがとうございました!

    キャンセル

0

phpMyAdminで設定を変更した後、MySQLとphpMyAdmin  は再起動されましたでしょうか?
再起動しないと変更した設定が読み込まれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/09/21 16:05

    ありがとうございます!
    phpMyAdminトップページの「MySQL接続の照合順序」変更後ですか? 再起動はしていませんね。
    ブラウザごとに保存されているような挙動に見えたので、そんな深い部分の設定になっているとは思いませんでした…。
    稼働中システムのサーバなので安易に再起動を行えず当分は試せないのですが、可能になり次第やってみます。

    キャンセル

  • 2016/09/21 16:10

    iniファイルを編集することになりますので、これは起動時に一度だけ読み込まれあとはそのままです。
    何かを変更した場合は再起動は不可欠ですね。

    キャンセル

  • 2016/09/21 16:11

    念のため…
    サーバーとなっているPCの再起動ではありませんよ。
    MySQLとphpMyAdminの再起動です。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • MySQL

    7415questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • phpMyAdmin

    831questions

    phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。