php mysql symfony pdo doctrine-orm

php - PDO::__ construct(): el servidor envió el juego de caracteres(255) desconocido para el cliente. Por favor, informe a los desarrolladores.



mysql symfony (6)

Funciona para mi>

el entorno:

localhost Windows 10 PHP 5.6.31 MYSQL 8

conjunto:

default-character-set=utf8

en:

c: / programdata / mysql / mysql server 8.0 / my.ini

  • No funciona en> C:/Program Files/MySQL/MySQL Server 5.5/my.ini

Herramientas que ayudan:

C:/Program Files/MySQL/MySQL Server 8.0/bin>mysql -u root -p mysql> show variables like ''char%''; mysql> show variables like ''collation%''; /m/

Estoy tratando de conectarme a una base de datos MySQL desde la aplicación Symfony 3. Pero cuando intento crear un esquema MySQL desde un comando de consola Symfony, aparece este error: PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers

Tanto PHP como MySQL se ejecutan en contenedores Docker.

Versión de MySQL: 8.0.1

Versión de PHP: 7.1.3

Conductor: pdo_mysql

juego de caracteres: UTF8

dsn: "mysql:host=mysql;dbname=database;charset=UTF8;"

¿Algunas ideas?


La respuesta aceptada me salvó (¡gracias, Bill!), Pero me encontré con otro problema relacionado, solo quería proporcionar algunos detalles sobre mi experiencia:

Después de actualizar a MySQL 8.0.11, experimenté el mismo problema que el OP cuando mysqli_connect() función mysqli_connect() PHP. En mi directorio MySQL (en mi caso, usr/local/mysql ), creé el archivo my.cnf , agregué el contenido en la respuesta aceptada y luego reinicié el servidor MySQL. Sin embargo, esto produjo un nuevo error:

mysqli_connect(): The server requested authentication method unknown to the client [caching_sha2_password]

default_authentication_plugin = mysql_native_password la línea default_authentication_plugin = mysql_native_password , por lo que my.cnf ahora se veía así:

[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8 default_authentication_plugin = mysql_native_password

y estaba listo para ir!

Para referencia adicional: https://github.com/laradock/laradock/issues/1392


MySQL 8 cambió el juego de caracteres predeterminado a utfmb4. Pero algunos clientes no conocen este juego de caracteres. Por lo tanto, cuando el servidor informa su conjunto de caracteres predeterminado al cliente, y el cliente no sabe lo que significa el servidor, arroja este error.

Ver también https://bugs.mysql.com/bug.php?id=71606

Ese error está en contra de MySQL Connector / C ++, por lo que está afectando más que solo PHP.

Bien, conseguí que funcione cambiando el conjunto de caracteres a utf8, para que sea compatible con clientes no actualizados. Agregué esto a /etc/my.cnf y reinicé mysqld:

[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8

Encontré esta configuración en una respuesta de 2010: ¿ Cambiar el conjunto de caracteres predeterminado de MySQL a UTF-8 en my.cnf?


Tuve el mismo problema para conectarme al sistema local.

Verifiqué en la lista de servicios (Ejecutar-> Servicios.msc-> Entrar) wampmysqld64 se detuvo.

Lo reinicié y pude iniciar sesión.


busque la sección [MySQLi] en su php.ini y agregue la línea mysqli.default_charset = "UTF-8" . Cambios similares que [Pdo_mysql] para la sección [Pdo_mysql] y [mysqlnd] .

El problema parece ser específicamente con MySQL versión 8.0, y la solución anterior funciona con PHP Versión 7.2, y la solución no funciona con PHP 7.0


Resolví este problema agregando el siguiente código en mi archivo /etc/my.cnf :

[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8

Después de guardar eso, entré en la configuración de mi sistema y detuve el servidor MYSQL y comencé de nuevo, y funcionó.