Đượ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.