PDO::_ _ construct (): сервер отправил кодировку (255), неизвестную клиенту. Пожалуйста, сообщите разработчикам


PDO::_ _ construct (): сервер отправил кодировку (255), неизвестную клиенту. Пожалуйста, сообщите разработчикам

16.04.2017 03:57:55 Просмотров 77 Источник

Я пытаюсь подключиться к базе данных 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

Является ответом!
Bill Karwin

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 в моем.КНФ?

https://stackoverflow.com/questions/43437490/pdo-construct-server-sent-charset-255-unknown-to-the-client-please-rep/43442839#comment74013902_43442839
Спасибо, но не получилось-та же ошибка.
https://stackoverflow.com/questions/43437490/pdo-construct-server-sent-charset-255-unknown-to-the-client-please-rep/43442839#comment74019731_43442839
Это сработало в моем окружении. MySQL 8.0.1, PHP 7.1.4. Вы перезапустили службу mysql?
https://stackoverflow.com/questions/43437490/pdo-construct-server-sent-charset-255-unknown-to-the-client-please-rep/43442839#comment74019734_43442839
К вашему сведению: bugs.php.net/bug.php?id=74461 смотрите комментарий от nikic, по-видимому, это было исправлено в PHP-источнике, и я предполагаю, что он будет выпущен в ближайшем будущем.
https://stackoverflow.com/questions/43437490/pdo-construct-server-sent-charset-255-unknown-to-the-client-please-rep/43442839#comment79847137_43442839
У меня было докеризованное приложение. поместите эту конфигурацию в /etc / mysql / conf.d решил ошибку. спасибо.
https://stackoverflow.com/questions/43437490/pdo-construct-server-sent-charset-255-unknown-to-the-client-please-rep/43442839#comment92890286_43442839
Остановите сервер mysql, если он запущен, сделайте так, как указано в ответе, и запустите сервер mysql обратно. Таким образом, это сработало для меня.
https://stackoverflow.com/questions/43437490/pdo-construct-server-sent-charset-255-unknown-to-the-client-please-rep/43442839#comment92890410_43442839
Я также запустил это в mysql, прежде чем я попробовал этот ответ, используйте правильный {dbname} в терминале сначала запустите это: [1] > mysql-u root-p [2] > > ALTER DATABASE {dbname} CHARACTER SET utf8 COLLATE utf8_general_ci;
https://stackoverflow.com/questions/43437490/pdo-construct-server-sent-charset-255-unknown-to-the-client-please-rep/43442839#comment99614822_43442839
На windows файл mysqlrouter.конф.образец был здесь C:\Program файлы\MySQL\MySQL Server 8.0\etc. Я добавил вышеуказанные строки и удалил.образец. Затем я перезапустил службу (Панель управления - > Администрирование - > > Службы).
https://stackoverflow.com/questions/43437490/pdo-construct-server-sent-charset-255-unknown-to-the-client-please-rep/43442839#comment99722634_43442839
На windows файл находится здесь C:\ProgramData\MySQL\MySQL Сервер 8.0\my.ини
skwidbreth

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

https://stackoverflow.com/questions/43437490/pdo-construct-server-sent-charset-255-unknown-to-the-client-please-rep/50790434#comment91089633_50790434
Примечание Вы должны создать новых пользователей, указав" идентифицировано с mysql_native_password "явно, и изменить существующих пользователей, например: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
https://stackoverflow.com/questions/43437490/pdo-construct-server-sent-charset-255-unknown-to-the-client-please-rep/50790434#comment103116836_50790434
Конечно, использовать ваш пароль: корень изменить пользователя'@'localhost' а отождествляется с mysql_native_password по yourrootpassword; и будьте осторожны: изменение метода проверки подлинности в моей.cnf вернется к старой системе хэширования паролей и настоятельно не рекомендуется
https://stackoverflow.com/questions/43437490/pdo-construct-server-sent-charset-255-unknown-to-the-client-please-rep/50790434#comment103116938_50790434
наконец-то сработало после того, как я выдал: ALTER USER root@ ' % 'идентифицирован с mysql_native_password по "secretpassword";
Shashikant Pandit

05.08.2018 09:01:40

У меня была такая же проблема для подключения к локальной системе.

Я проверил список служб (Run - >Services.msc- > Enter) wampmysqld64 был остановлен.

Перезапустить его. и смог войти в систему.

user7154703

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

https://stackoverflow.com/questions/43437490/pdo-construct-server-sent-charset-255-unknown-to-the-client-please-rep/51971103#comment91731536_51971103
Mysqli, то.default_charset не задокументирован по адресу php.net/manual/en/mysqli.configuration.php
reyqueson

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/
https://stackoverflow.com/questions/43437490/pdo-construct-server-sent-charset-255-unknown-to-the-client-please-rep/54311194#comment96876363_54311194
Он очень хорошо работает на Windows 10
hardik chugh

11.06.2019 09:45:16

Я решил эту проблему, добавив следующий код в мой /etc / my.КНФ файл -

enter image description here

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8

После сохранения этого я вошел в свои системные настройки и остановил сервер MYSQL и начал снова, и это сработало.

npsingh

13.08.2019 03:03:31

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

Выберите второй способ аутентификации во время установки.

Удачи Вам!

Qayed

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

так что я сделал:

  1. Создал новую группу параметров, а затем отредактировал их.

  2. Поиск по всем параметрам набора символов. По умолчанию они пусты. отредактируйте их по отдельности и выберите utf8 из выпадающего списка.

character_set_client, character_set_connection, character_set_database, character_set_server

  1. СОХРАНИТЬ

А затем самое главное, перезагрузил экземпляр RDS.

Это решило мою проблему и соединение с php5. 6 до mysql 8.Икс работал отлично.

надеюсь, это поможет.

Пожалуйста, просмотрите это изображение для лучшего понимания. Введите описание изображения здесь

Помочь в развитии проекта:
Закрыть X