わかりました-ここに着陸した他の人に自分の答えを投稿します:(これはどこかで見たことがありますが、説明がなかったため、そのときは信用していませんでした)。
SQL Format()が数値を文字列に変換する場合、変数 character_set_resultsを使用します。 .PMAの[変数]タブにはこれが「utf8」と表示されていましたが、下の行に(セッション値)=utf8mb4と表示されていました。
したがって、PMAがサーバーのデフォルトを上書きしていることに気づきました。私の本当の問題は[mysqld] skip-character-set-client-handshake設定を使用するか、php.config.incファイルを編集することにより、このオーバーライドを変更する方法を見つけることができませんでした。同じPMAを使用して古いMySQLサーバーに接続しましたが、問題は発生しませんでした。これは、PMAが新しい(対応)サーバーでutf8mb4を強制しているが、古いサーバーでは強制していないことを示唆しています。phpmyadminで文字列をテキスト検索しました。 'mb4'で、クラスに次のコードが見つかりました: phpMyAdmin / libraries / DatabaseInterface.class.php
// Skip charsets for Drizzle
if (!PMA_DRIZZLE) {
if (PMA_MYSQL_INT_VERSION > 50503) {
$default_charset = 'utf8mb4';
$default_collation = 'utf8mb4_general_ci';
} else {
$default_charset = 'utf8';
$default_collation = 'utf8_general_ci';
}
PMA_MYSQL_INT_VERSION> 50503 古いmysqlバージョンに関する私の理論に適合しているようです。そのため、ファイルをバックアップし、 utf8mb4を置き換えてクラスを編集しました。 utf8を使用 このfunction.phpMyAdminは、変数タブに必要なものを表示し、Format()関数は期待するものを返します。