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

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

新規登録して質問してみよう
ただいま回答率
85.49%
MySQL

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

phpMyAdmin

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

Q&A

解決済

2回答

8596閲覧

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

takushi168

総合スコア228

MySQL

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

phpMyAdmin

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

0グッド

0クリップ

投稿2016/09/21 03:34

編集2016/09/21 06:32

やりたいこと

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」へ変更しても改善されません。
(再ログイン等行ってみても同様でした)

また、以下を実行すると

sql

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ijufumi

2016/09/21 06:10

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

2016/09/21 06:32 編集

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

回答2

0

ベストアンサー

phpMyAdminのインストールディレクトリ/libraries/database_interface.inc.phpに

PHP

1 PMA_DBI_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci';", $link, PMA_DBI_QUERY_STORE);

という記述があります。
ここのutf8をutf8mb4に変えてみたらどうでしょうか?

最近のバージョン(4系)にはこういう記述はありませんが、ちょっと前のバージョン(3系など)にはあるようです。
使い勝手もよくなるので、可能なら最新バージョンに上げるのも良いかもしれません。

投稿2016/09/21 06:55

ijufumi

総合スコア276

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takushi168

2016/09/21 07:36

ありがとうございます! ファイルは参照する権限すらありませんでした…orz また後日になってしまいますが、サーバー管理者に問い合わせて確認してみます。 しかし、最新バージョンに上げるのが一番良いかもしれませんね。 こちらもすぐにどうこうできる点ではないのですが、検討してみます。
takushi168

2016/10/04 01:08

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

0

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

投稿2016/09/21 06:51

to.chan.genkida

総合スコア69

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takushi168

2016/09/21 07:05

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

2016/09/21 07:10

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

2016/09/21 07:11

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問