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ó.