Se stai cercando di interrogare un database su mysql8 da php, ma durante la fase di connessione al server ottieni il seguente errore:
"Server sent charset unknown to the client"...
significa che mysql8 è configurato con un charset utf8mb4
per poterti connettere devi riconfigurare il charset a utf8 e cercando in rete si trovano consigli su come procedere, e in realtà è abbastanza semplice.
Basta aggiungere queste righe al file di configurazione di mysql (my.ini) che in una installazione standard su windows si trova in : C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
purtoppo però, e questo l'ho provato sulla mia pelle, una volta modificato il file my.ini con notepad e fermato il servizio mysql, al tentativo di riavvio, questo non riparte più.
nemmeno se si prova cancellare le linee aggiunte al file si riesce più a far ripartire il servizio.
Dilemma...
Il problema è notepad.
Infatti all'interno del file originale my.ini c'è la seguente riga:
# range from 1 to 2^32 − 1. “Unique” means that each ID must be different
che contiene 3 caratteri speciali che nel momento in cui viene salvato il file, creano un problema che impedisce il riavvio di mysql.
Per ovviare al problema, basta: cancellare la linea incriminata (tanto è un commento, non serve a nulla se non a dare un spiegazione) modificare il file aggiungendo le linee indicate sopra, e poi usare l'opzione "save as..." o "salva con nome..." andando poi a scegliere l'opzione ANSI nella select.
In questo modo il file salvato è formalmente corretto e sarà visto correttamente da mysql.
fermate il servizio Mysql, chiudete il workbach se lo state usando, riaprite workbach e riavviate il servizio mysql.
Tutto fatto.
ho trovato soluzioni e consigli ai seguenti indirizzi:
https://superuser.com/questions/1421016/mysql-8-0-starts-and-stops-after-my-ini-saved-or-edited-in-windows-10
https://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf
https://bugs.mysql.com/bug.php?id=85946