sql >> データベース >  >> RDS >> Mysql

PHPMyAdminは、デフォルトの照合としてut8mb4を使用するように強制します

    わかりました-ここに着陸した他の人に自分の答えを投稿します:(これはどこかで見たことがありますが、説明がなかったため、そのときは信用していませんでした)。

    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()関数は期待するものを返します。



    1. エラー1005(HY000):テーブルを作成できません(errno:150)

    2. すべてのDBAが知っておくべき4つの主要なデータベース監視アクティビティ

    3. PostgreSQLでのATTIMEZONEの動作

    4. PHPでMySQLデータをExcelにエクスポートする