PDO::_ _ construct (): сервер отправил кодировку (255), неизвестную клиенту. Пожалуйста, сообщите разработчикам
Я пытаюсь подключиться к базе данных MySQL из приложения Symfony 3. Но при попытке создать схему MySQL из команды консоли Symfony я получаю эту ошибку: PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers
И PHP, и MySQL работают в контейнерах Docker.
Версия MySQL: 8.0.1
Версия PHP: 7.1.3
Драйвер: pdo_mysql
кодировка: UTF8
о доставке: "mysql:host=mysql;dbname=database;charset=UTF8;"
Есть идеи?
Ответы - PDO::_ _ construct (): сервер отправил кодировку (255), неизвестную клиенту. Пожалуйста, сообщите разработчикам / PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers

17.04.2017 01:30:57
MySQL 8 изменил кодировку по умолчанию на utfmb4. Но некоторые клиенты не знают эту кодировку. Поэтому, когда сервер сообщает клиенту свою кодировку по умолчанию, и клиент не знает, что означает сервер, он выдает эту ошибку.
См. также https://bugs.mysql.com/bug.php?id=71606
Эта ошибка против MySQL Connector/C++, поэтому она влияет не только на PHP.
Хорошо-я получил его для работы, изменив набор символов на utf8, чтобы быть совместимым с не обновленными клиентами. Я добавил Это в /etc / my.CNF и перезапустить тузды:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
Я нашел эти настройки в ответе от 2010: измените набор символов MySQL по умолчанию на UTF-8 в моем.КНФ?









11.06.2018 07:13:33
Принятый ответ спас меня (спасибо, Билл!!!), но я столкнулся с другой связанной проблемой, просто хотел предоставить некоторые подробности о моем опыте -
После обновления до MySQL 8.0.11, я испытал ту же проблему, что и OP при использовании mysqli_connect()
PHP. В моем каталоге MySQL (в моем случае usr/local/mysql
)я создал my.cnf
-файл, добавил содержимое в принятый ответ,а затем перезапустил сервер MySQL. Однако это привело к новой ошибке:
mysqli_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
Я добавил строку default_authentication_plugin = mysql_native_password
, так my.cnf
теперь выглядел так:
[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
и мне было хорошо идти!
Для дополнительной справки: https://github.com/laradock/laradock/issues/1392

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';



05.08.2018 09:01:40
У меня была такая же проблема для подключения к локальной системе.
Я проверил список служб (Run - >Services.msc- > Enter) wampmysqld64 был остановлен.
Перезапустить его. и смог войти в систему.

22.08.2018 07:16:13
найдите раздел [MySQLi]
в вашем php.ini
и добавить строку mysqli.default_charset = "UTF-8"
. Аналогичные изменения я требую для раздела [Pdo_mysql]
и [mysqlnd]
.
Проблема, кажется, конкретно с MySQL версии 8.0, и выше решение найдено работает с PHP версии 7.2, и решение не работает с PHP 7.0


22.01.2019 06:10:53
Работает на меня >
окружающая среда:
localhost
Windows 10
PHP 5.6.31
MYSQL 8
набор:
default-character-set=utf8
на:
c:\programdata\mysql\mysql \Сервер 8.0 моя.ини
- Не работает на> >
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
Инструменты, которые помогают:
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysql -u root -p
mysql> show variables like 'char%';
mysql> show variables like 'collation%';
\m/


11.06.2019 09:45:16
Я решил эту проблему, добавив следующий код в мой /etc / my.КНФ файл -
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
После сохранения этого я вошел в свои системные настройки и остановил сервер MYSQL и начал снова, и это сработало.

13.08.2019 03:03:31
Я столкнулся с той же проблемой, поэтому я переустановил MySQL 8 с другим методом аутентификации "используйте устаревший метод аутентификации(сохраните MySQL 5.X совместимость)", то работать правильно.
Выберите второй способ аутентификации во время установки.
Удачи Вам!

20.11.2019 07:52:15
Мой случай заключался в том, что я использовал RDS (mysql db verion 8) AWS и подключал свое приложение через EC2 (мой php-код 5.6 был в EC2).
Вот в этом случае, так как это RDS, нет моего.cnf параметры поддерживаются группой параметров AWS. См.: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html
так что я сделал:
Создал новую группу параметров, а затем отредактировал их.
Поиск по всем параметрам набора символов. По умолчанию они пусты. отредактируйте их по отдельности и выберите utf8 из выпадающего списка.
character_set_client, character_set_connection, character_set_database, character_set_server
- СОХРАНИТЬ
А затем самое главное, перезагрузил экземпляр RDS.
Это решило мою проблему и соединение с php5. 6 до mysql 8.Икс работал отлично.
надеюсь, это поможет.
Пожалуйста, просмотрите это изображение для лучшего понимания. Введите описание изображения здесь