Ok - jeg vil sende mit eget svar til alle andre, der lander her:(jeg havde set dette et andet sted, men stolede ikke på det på det tidspunkt, fordi der ikke var nogen forklaring).
Når SQL Format() forvandler et tal til en streng, bruger det variablen character_set_results .PMA's Variables-fane viste dette som "utf8", men på en linje nedenfor stod der (sessionsværdi) =utf8mb4.
Så jeg var klar over, at PMA tilsidesatte serverstandarden. Mit egentlige problem var, at jeg kunne ikke finde nogen måde at ændre denne tilsidesættelse - enten ved at bruge [mysqld] skip-character-set-client-handshake indstillingen.. eller ved at redigere filen php.config.inc.I dag havde jeg et gennembrud.. Jeg konstaterede, at hvis Jeg brugte den samme PMA til at oprette forbindelse til en ældre MySQL-server, problemet opstod ikke. Dette tydede på, at PMA tvang utf8mb4 på nyere (kompatible) servere, men ikke ældre. Jeg lavede en tekstsøgning i phpmyadmin efter strengen 'mb4' og fandt følgende kode i klassen: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 synes at passe med min teori om ældre mysql-versioner, så jeg har sikkerhedskopieret filen og redigeret klassen og erstattet utf8mb4 med utf8 i denne funktion.phpMyAdmin viser nu, hvad jeg vil have i dens variabler-fane, og Format()-funktionen returnerer nu, hvad jeg forventer.