Mysql
 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 в тази функция.phpMyAdmin вече показва какво искам в раздела си с променливи, а функцията Format() сега връща това, което очаквам.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP $stmt->num_rows не работи с подготвени оператори

  2. Създайте база данни при стартиране на docker-compose

  3. MYSQL, ако заявка за избор връща 0 реда, тогава друга заявка за избор?

  4. Множество, но взаимно изключващи се външни ключове - това ли е пътят?

  5. Прикачване на съществуваща база данни с MySQL