Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PHPMyAdmin buộc sử dụng ut8mb4 làm đối chiếu mặc định

Được rồi - tôi sẽ đăng câu trả lời của riêng mình cho bất kỳ ai khác đặt chân đến đây:(tôi đã thấy câu trả lời này ở một nơi khác, nhưng không tin tưởng nó một lúc vì không có lời giải thích).

Khi Định dạng SQL () biến một số thành một chuỗi, nó sử dụng biến character_set_results Tab Biến của .PMA đang hiển thị đây là "utf8" nhưng sau đó trên một dòng bên dưới, nó cho biết (giá trị phiên) =utf8mb4.
Vì vậy, tôi biết rằng PMA đang ghi đè mặc định của máy chủ. Vấn đề thực sự của tôi là tôi không thể tìm thấy cách nào để thay đổi ghi đè này - bằng cách sử dụng cài đặt [mysqld] bỏ qua ký tự-set-client-handshake .. hoặc bằng cách chỉnh sửa tệp php.config.inc. Hôm nay tôi đã có một bước đột phá .. Tôi đã thiết lập rằng nếu Tôi đã sử dụng cùng một PMA để kết nối với và máy chủ MySQL cũ hơn, sự cố đã không xảy ra. Điều này cho thấy PMA đang buộc utf8mb4 trên các máy chủ mới hơn (có khả năng) chứ không phải các máy chủ cũ hơn. Tôi đã thực hiện tìm kiếm văn bản phpmyadmin cho chuỗi 'mb4' và tìm thấy mã sau trong lớp: phpMyAdmin / architects / 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 có vẻ phù hợp với lý thuyết của tôi về các phiên bản mysql cũ hơn, vì vậy tôi đã sao lưu tệp và chỉnh sửa lớp thay thế utf8mb4 với utf8 trong function.phpMyAdmin này hiện đang hiển thị những gì tôi muốn trong tab biến của nó và hàm Format () hiện đang trả về những gì tôi mong đợi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Số lượng Mysql trả về 0 nếu không tìm thấy bản ghi

  2. MySQL - Tham gia 2 bảng

  3. MySQL tương đương với hàm DECODE trong Oracle

  4. MySQL Chỉ chọn một hàng từ mỗi bệnh nhân được chẩn đoán theo ngày đầu tiên

  5. chỉ mục trả lại mySQL sau khi chèn