ठीक है - मैं यहां आने वाले किसी और के लिए अपना जवाब पोस्ट करने जा रहा हूं:(मैंने इसे कहीं और देखा था, लेकिन उस समय इस पर भरोसा नहीं किया क्योंकि कोई स्पष्टीकरण नहीं था)।
जब SQL फ़ॉर्मेट () किसी संख्या को स्ट्रिंग में बदल देता है, तो यह चर character_set_results का उपयोग करता है .PMA का वेरिएबल्स टैब इसे "utf8" के रूप में दिखा रहा था, लेकिन फिर नीचे एक लाइन पर, यह कह रहा था (session value) =utf8mb4।
इसलिए मुझे पता था कि PMA सर्वर डिफॉल्ट को ओवरराइड कर रहा है। इस ओवरराइड को बदलने का कोई तरीका नहीं मिल सका - या तो [mysqld] स्किप-कैरेक्टर-सेट-क्लाइंट-हैंडशेक सेटिंग का उपयोग करके .. या php.config.inc फ़ाइल को संपादित करके। आज मुझे एक सफलता मिली .. मैंने स्थापित किया कि यदि मैंने MySQL सर्वर से कनेक्ट करने के लिए उसी PMA का उपयोग किया, समस्या नहीं हुई। यह सुझाव दिया गया कि 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 अब दिखा रहा है कि मैं इसके चर टैब में क्या चाहता हूं, और प्रारूप () फ़ंक्शन अब वही लौटा रहा है जो मैं उम्मीद करता हूं।