sql >> Databáze >  >> RDS >> Mysql

PHPMyAdmin nutí používat ut8mb4 jako výchozí řazení

Ok – zveřejním svou vlastní odpověď pro každého, kdo se sem dostane:(viděl jsem to někde jinde, ale tehdy jsem tomu nevěřil, protože nebylo žádné vysvětlení).

Když SQL Format() změní číslo na řetězec, použije proměnnou character_set_results Karta Proměnné .PMA toto ukazovala jako "utf8", ale pak na řádku níže bylo uvedeno (hodnota relace) =utf8mb4.
Takže jsem si byl vědom, že PMA přepisuje výchozí nastavení serveru. Můj skutečný problém byl v tom, že nenašel žádný způsob, jak toto přepsání změnit – buď pomocí nastavení [mysqld] skip-character-set-client-handshake.. nebo úpravou souboru php.config.inc.Dnes jsem měl průlom.. Zjistil jsem, že pokud Použil jsem stejný PMA pro připojení ke staršímu serveru MySQL, problém se nevyskytl. Naznačovalo to, že PMA vynucuje utf8mb4 na novějších (schopných) serverech, ale ne na starších. Provedl jsem textové vyhledávání řetězce phpmyadmin 'mb4' a ve třídě našli následující kód: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 Zdá se, že odpovídá mé teorii o starších verzích mysql, takže jsem zálohoval soubor a upravil třídu nahrazující utf8mb4 pomocí utf8 v této funkci.phpMyAdmin nyní na kartě proměnných zobrazuje, co chci, a funkce Format() nyní vrací to, co očekávám.



  1. Laravel pomocí klauzule where v metodě withCount

  2. Je to opravdu dlouhé hlasování?

  3. Existuje SQL Server Profiler pro SQL Server Express?

  4. PHP/MySQL:Ukládání a načítání UUIDS