PDO::__construct(): El servidor envió un conjunto de caracteres (255) desconocido para el cliente. Por favor, informe a los desarrolladores
Estoy intentando conectarme a una base de datos MySQL desde una aplicación Symfony 3. Pero al intentar crear el esquema MySQL desde un comando de la consola de Symfony obtengo este error: PDO::__construct(): Server sent charset (255) unknown to the client. Por favor, informe a los desarrolladores
.
Tanto PHP como MySQL se están ejecutando en contenedores Docker.
Versión de MySQL: 8.0.1
Versión de PHP: 7.1.3
.
Controlador: pdo_mysql
conjunto de caracteres: UTF8
dsn: "mysql:host=mysql;dbname=base de datos;charset=UTF8;"
¿Alguna idea?
28
3
MySQL 8 cambió el conjunto de caracteres por defecto a utfmb4. Pero algunos clientes no conocen este conjunto de caracteres. Por lo tanto, cuando el servidor informa de su conjunto de caracteres por defecto al cliente, y el cliente no sabe lo que el servidor quiere decir, se produce este error.
Véase también https://bugs.mysql.com/bug.php?id=71606
Ese error es contra el Conector/C++ de MySQL, así que afecta más que sólo a PHP.
Vale, conseguí que funcionara cambiando el juego de caracteres a utf8, para ser compatible con clientes no actualizados. Añadí esto a /etc/my.cnf y reinicié mysqld:
He encontrado esta configuración en una respuesta de 2010: https://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf
La respuesta aceptada me salvó (¡¡¡gracias, Bill!!!), pero me encontré con otro problema relacionado, sólo quería aportar algunos detalles sobre mi experiencia -
Después de actualizar a MySQL 8.0.11, experimenté el mismo problema que el OP al usar la función
mysqli_connect()
de PHP. En mi directorio MySQL (en mi caso,usr/local/mysql
), creé el archivomy.cnf
, añadí el contenido en la respuesta aceptada, y luego reinicié el servidor MySQL. Sin embargo, esto produjo un nuevo error:mysqli_connect(): El servidor solicitó un método de autenticación desconocido para el cliente [caching_sha2_password]
.Añadí la línea
default_authentication_plugin = mysql_native_password
, así quemy.cnf
ahora tenía este aspecto:y ¡listo!
Para referencias adicionales: https://github.com/laradock/laradock/issues/1392
Tuve el mismo problema para conectarme al sistema local.
He comprobado en la lista de servicios (Run->Services.msc->Enter) wampmysqld64 fue detenido.
Lo reinicié y pude conectarme.