Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHPMyAdmin força a usar ut8mb4 como agrupamento padrão


Ok - vou postar minha própria resposta para qualquer outra pessoa que pousar aqui:(eu tinha visto isso em outro lugar, mas não confiei na época porque não havia explicação).

Quando o SQL Format() transforma um número em uma string, ele usa a variável character_set_results A guia Variáveis ​​do .PMA estava mostrando isso como "utf8", mas em uma linha abaixo, estava dizendo (valor da sessão) =utf8mb4.
Então eu estava ciente de que o PMA estava substituindo o padrão do servidor. Meu problema real era que eu não consegui encontrar nenhuma maneira de alterar essa substituição - usando a configuração [mysqld] skip-character-set-client-handshake .. ou editando o arquivo php.config.inc. Hoje eu tive um avanço .. Eu estabeleci que se Eu usei o mesmo PMA para conectar a um servidor MySQL mais antigo, o problema não ocorreu. Isso sugere que o PMA estava forçando utf8mb4 em servidores mais novos (capazes), mas não em servidores mais antigos. Eu fiz uma pesquisa de texto de phpmyadmin para a string 'mb4' e encontrei o seguinte código na classe: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';
        }

o PMA_MYSQL_INT_VERSION> 50503 parece se encaixar na minha teoria sobre versões mais antigas do mysql, então fiz backup do arquivo e editei a classe substituindo utf8mb4 com utf8 nesta função.phpMyAdmin agora está mostrando o que eu quero em sua guia de variáveis, e a função Format() agora está retornando o que eu espero.