Я пытаюсь подключиться к базе данных MySQL из приложения Symfony 3. Но при попытке создать MySQL-схему из командной консоли Symfony я получаю эту ошибку: 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
И PHP, и MySQL работают в контейнерах Docker.
Версия MySQL: 8.0.1
Версия PHP: 7.1.3
charset: UTF8
dsn: "mysql:host=mysql;dbname=database;charset=UTF8;"
Есть идеи?
MySQL 8 изменил кодировку по умолчанию на utfmb4. Но некоторые клиенты не знают эту кодировку. Следовательно, когда сервер сообщает клиенту по умолчанию свой код, а клиент не знает, что означает сервер, он выдает эту ошибку.
См. Также https://bugs.mysql.com/bug.php?id=71606
Эта ошибка против MySQL Connector / C ++, поэтому она затрагивает больше, чем просто PHP.
Хорошо, я получил его для работы, изменив набор символов на utf8, чтобы быть совместимым с не обновленными клиентами. Я добавил это в /etc/my.cnf и перезапустил mysqld:
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8
по[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8
по[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8
Я нашел эти параметры в ответе с 2010 года: измените значение по умолчанию для MySQL по умолчанию на UTF-8 в my.cnf?