개발자에게 보고하십시오: PDO::__construct(): 서버에서 보낸 문자 집합(255)이 클라이언트에서 인식되지 않습니다.
P粉808697471
P粉808697471 2023-10-16 10:02:44
0
2
705

Symfony 3 애플리케이션에서 MySQL 데이터베이스에 연결하려고 합니다. 하지만 Symfony 콘솔 명령으로 MySQL 스키마를 생성하려고 하면 다음 오류가 발생합니다. PDO::__construct(): 服务器发送了客户端未知的字符集 (255)。请向开发者报告

PHP와 MySQL은 모두 Docker 컨테이너에서 실행됩니다.

MySQL 버전: 8.0.1

PHP 버전: 7.1.3

운전기사:pdo_mysql

캐릭터 세트:UTF8

dsn: "mysql:host=mysql;dbname=database;charset=UTF8;"

어떤 아이디어가 있나요?

P粉808697471
P粉808697471

모든 응답(2)
P粉364642019

MySQL 8.0.11로 업그레이드한 후 PHP의 mysqli_connect()函数时遇到了与OP相同的问题。在我的 MySQL 目录(在我的例子中,usr/local/mysql)中,我创建了 my.cnf 파일을 사용하고 허용된 답변의 내용을 추가하고 MySQL 서버를 다시 시작했습니다. 그러나 이로 인해 새로운 오류가 발생했습니다.

mysqli_connect():服务器请求客户端未知的身份验证方法 [caching_sha2_password]

라인을 추가했는데 default_authentication_plugin = mysql_native_password,所以 my.cnf 이제 다음과 같습니다:

으아아아

가서 너무 신난다!

더 많은 참고자료: https://github.com/laradock/laradock/issues/1392

ARA1307의 댓글을 참고하세요:

"새 사용자를 생성하고 "IDENTIFIED WITH mysql_native_password"를 명시적으로 지정하고 기존 사용자를 변경해야 합니다. 예: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';"

P粉884548619

MySQL 8은 기본 문자 집합을 utf8mb4로 변경합니다. 그러나 일부 고객은 이 문자 집합을 모릅니다. 따라서 이 오류는 서버가 기본 문자 집합을 클라이언트에 보고하고 클라이언트가 서버의 의미를 모르는 경우 발생합니다.

참조 https://bugs.mysql.com/bug.php?id= 71606

이 버그는 MySQL Connector/C++에만 해당되므로 PHP에만 영향을 미치지 않습니다.

올바른 해결책은 클라이언트를 업그레이드하는 것입니다. 하지만 그동안 업그레이드되지 않은 클라이언트와 호환되도록 서버의 문자 집합을 utf8로 변경하여 작동하게 했습니다. /etc/my.cnf에 추가하고 mysqld를 다시 시작했습니다:

으아악

2010년 답변에서 다음 설정을 찾았습니다. my.cnf의 MySQL 기본 문자 집합을 UTF-8로 변경하시겠습니까?

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿