Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHPMyAdmin wymusza użycie ut8mb4 jako domyślnego sortowania

Ok - zamierzam opublikować własną odpowiedź dla każdego, kto tu wyląduje:(widziałem to gdzie indziej, ale wtedy nie ufałem, ponieważ nie było wyjaśnienia).

Kiedy SQL Format() zamienia liczbę w ciąg, używa zmiennej character_set_results Zakładka Zmienne .PMA pokazywała to jako „utf8”, ale w wierszu poniżej było napisane (wartość sesji) =utf8mb4.
Więc wiedziałem, że PMA nadpisuje domyślną wartość serwera. Moim prawdziwym problemem było to, że nie mogłem znaleźć sposobu, aby zmienić to nadpisanie - albo za pomocą ustawienia [mysqld] skip-character-set-client-handshake.. albo edytując plik php.config.inc. Dzisiaj miałem przełom.. Ustaliłem, że jeśli Użyłem tego samego PMA do połączenia ze starszym serwerem MySQL, problem nie wystąpił. Sugerowało to, że PMA wymuszał utf8mb4 na nowszych (zdolnych) serwerach, ale nie starszych. Przeszukałem tekst w phpmyadmin dla ciągu 'mb4' i znalazł następujący kod w klasie: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 wydaje się być zgodny z moją teorią dotyczącą starszych wersji mysql, więc utworzyłem kopię zapasową pliku i wyedytowałem klasę, zastępując utf8mb4 z utf8 w tej funkcji.phpMyAdmin pokazuje teraz to, czego chcę w swojej zakładce zmiennych, a funkcja Format() zwraca teraz to, czego oczekuję.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyświetlić dane Unicode za pomocą PHP

  2. Pula połączeń C# MySQL

  3. Który jest szybszy i lżejszy - mysqli i PDO

  4. Jak utworzyć i wstawić obiekt JSON za pomocą zapytań MySQL?

  5. Jak zoptymalizować to skomplikowane zapytanie EAV MYSQL?