Heim >Backend-Entwicklung >PHP-Tutorial >Warum schlägt meine PHP-PDO-Verbindung mit „Unbekannter Zeichensatz (255)' von MySQL 8 fehl?

Warum schlägt meine PHP-PDO-Verbindung mit „Unbekannter Zeichensatz (255)' von MySQL 8 fehl?

Barbara Streisand
Barbara StreisandOriginal
2024-12-10 03:33:08901Durchsuche

Why Does My PHP PDO Connection Fail with

PDO-Fehler: Unbekannter Zeichensatz (255) vom MySQL-Server

Beim Herstellen einer Verbindung zu einer MySQL-Datenbank können Entwickler auf den Fehler stoßen: „ PDO::__construct(): Der Server hat den dem Client unbekannten Zeichensatz (255) gesendet. Bitte melden Sie dies den Entwicklern. Dies kann in Situationen mit Docker-Containern und Symfony-Anwendungen auftreten.

Ursache:

MySQL Version 8 führte eine Änderung ein, bei der der Standardzeichensatz auf utf8mb4 geändert wurde. Allerdings erkennen einige Clients, wie z. B. bestimmte PHP-Versionen, diesen Zeichensatz nicht. Wenn der Server dem Client seinen Standardzeichensatz mitteilt, führt mangelndes Verständnis des Clients zu dem Fehler.

Lösung:

Die ideale Lösung besteht darin, den Client auf zu aktualisieren eine, die utf8mb4 unterstützt. Aus Kompatibilitätsgründen ist es möglich, den Zeichensatz des Servers auf utf8 anzupassen, wie unten gezeigt:

Schritt 1: MySQL-Serverkonfiguration bearbeiten

Fügen Sie die folgenden Zeilen hinzu /etc/my.cnf und starten Sie MySQL neu:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

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

Schritt 2: Neustart MySQL

MySQL neu starten, um die Änderungen zu übernehmen:

service mysql restart

Diese Änderung stellt die Kompatibilität mit älteren Clients sicher, die utf8mb4 nicht unterstützen.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine PHP-PDO-Verbindung mit „Unbekannter Zeichensatz (255)' von MySQL 8 fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn