Hola, encontramos la solución a tu interrogante, desplázate y la encontrarás un poco más abajo.
Solución:
MySQL 8 cambió el conjunto de caracteres predeterminado a utf8mb4. Pero algunos clientes no conocen este conjunto de caracteres. Por lo tanto, cuando el servidor informa su conjunto de caracteres predeterminado al cliente y el cliente no sabe qué significa el servidor, arroja este error.
Consulte 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.
De acuerdo, lo hice funcionar cambiando el juego de caracteres a utf8, para que sea compatible con clientes no actualizados. Agregué esto a /etc/my.cnf y reinicié 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?
La respuesta aceptada me salvó (¡gracias, Bill!), pero encontré otro problema relacionado, solo quería brindar algunos detalles sobre mi experiencia:
Después de actualizar a MySQL 8.0.11, experimenté el mismo problema que el OP cuando usaba PHP mysqli_connect()
función. En mi directorio MySQL (en mi caso, usr/local/mysql
), creé el my.cnf
archivo, agregó el contenido en la respuesta aceptada, 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]
Agregué la línea default_authentication_plugin = mysql_native_password
asi que my.cnf
ahora parecía:
[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 yo estaba bueno para ir!
Para referencia adicional: https://github.com/laradock/laradock/issues/1392
Mi caso fue que estaba usando RDS (mysql db verion 8) de AWS y estaba conectando mi aplicación a través de EC2 (mi código php 5.6 estaba en EC2).
Aquí, en este caso, dado que es RDS, no hay my.cnf, los parámetros son mantenidos por PARAMETER Group of AWS. Consulte: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html
entonces lo que hice fue:
-
Creó un nuevo grupo de parámetros y luego los editó.
-
Buscó todos los parámetros del juego de caracteres. Estos están en blanco por defecto. edítelos individualmente y seleccione utf8 de la lista desplegable.
cliente_juego_de_caracteres, conexión_juego_de_caracteres, base_de_datos_de_juego_de_caracteres, servidor_de_juego_de_caracteres
- AHORRAR
Y luego, lo más importante, instancia de RDS reiniciada.
Esto resolvió mi problema y la conexión de php5.6 a mysql 8.x funcionó muy bien.
espero que esto ayude.
Por favor, vea esta imagen para una mejor comprensión. ingrese la descripción de la imagen aquí
Te mostramos las comentarios y valoraciones de los usuarios
Recuerda algo, que tienes la capacidad de añadir una tasación correcta .