Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PHPMyAdmin memaksa untuk menggunakan ut8mb4 sebagai susunan default

Oke - saya akan memposting jawaban saya sendiri untuk siapa pun yang mendarat di sini:(saya telah melihat ini di tempat lain, tetapi tidak memercayainya saat itu karena tidak ada penjelasan).

Saat SQL Format() mengubah angka menjadi string, ia menggunakan variabel character_set_results Tab Variabel PMA menunjukkan ini sebagai "utf8" tetapi kemudian pada baris di bawahnya, tertulis (nilai sesi) =utf8mb4.
Jadi saya sadar bahwa PMA mengesampingkan default server. Masalah saya yang sebenarnya adalah saya tidak dapat menemukan cara untuk mengubah penggantian ini - baik dengan menggunakan pengaturan [mysqld] lewati-karakter-set-klien-jabat tangan.. atau dengan mengedit file php.config.inc. Hari ini saya memiliki terobosan.. Saya menetapkan bahwa jika Saya menggunakan PMA yang sama untuk terhubung ke dan server MySQL yang lebih lama, masalahnya tidak terjadi. Ini menunjukkan bahwa PMA memaksa utf8mb4 pada server yang lebih baru (mampu), tetapi bukan yang lebih lama. Saya melakukan pencarian teks phpmyadmin untuk string 'mb4' dan menemukan kode berikut di kelas: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 sepertinya cocok dengan teori saya tentang versi mysql yang lebih lama, jadi saya telah mencadangkan file dan mengedit kelas menggantikan utf8mb4 dengan utf8 dalam fungsi ini.phpMyAdmin sekarang menampilkan apa yang saya inginkan di tab variabelnya, dan fungsi Format() sekarang mengembalikan apa yang saya harapkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Memperbaiki Java.sql.SQLException:Kolom 'id' tidak ditemukan. kesalahan dalam Boot Musim Semi

  2. MySQL IFNULL LAINNYA

  3. Cara membandingkan string untuk satu spasi

  4. Memeriksa konflik rentang tanggal di MySQL

  5. Koneksi Java - MySQL:Pengambilan Kunci Publik tidak diizinkan