Mysql
 sql >> Database >  >> RDS >> Mysql

PHP/PDO/MySQL:l'inserimento in MEDIUMBLOB memorizza dati errati

Non credo che questo debba essere un bug. Posso immaginare che ogni volta che il client parla con il server e dice che il seguente comando è in UTF-8 e il server ne ha bisogno in Latin-1, la query potrebbe essere ricodificata prima dell'analisi e dell'esecuzione. Quindi questo è un problema di codifica per il trasporto dei dati. Poiché l'intera query prima dell'analisi verrà influenzata da questa ricodifica, anche i dati binari per la colonna BLOB verranno modificati.

Dal manuale di Mysql:

O sulla via del ritorno:i dati Latin1 dal negozio verranno convertiti in UTF-8 perché il client ha detto al server che preferisce UTF-8 per il trasporto.

L'identificatore del PDO stesso che chiami sembra essere qualcosa di completamente diverso:

Non sono un esperto di MySQL, ma lo spiegherei in questo modo. Il client e il server devono negoziare quali set di caratteri stanno utilizzando e presumo che lo facciano per un motivo.