PDO::__construct():서버로 전송 charset(255)알 수 없는 클라이언트. 시,보고서 개발자

나는'm 에 연결하려는 MySQL 데이터베이스에서 심포 3 응용 프로그램. 그러나를 만들려고 할 때 MySQL 스키마에서 심포 콘솔 명령을 내가 이 오류가 발생할 수 있습니다.PDO::__construct():서버로 전송 charset(255)알 수 없는 클라이언트. 시,보고서를 개발

모두 PHP and MySQL 에서 실행되는 도커 컨테이너입니다.

MySQL 버전:8.0.1

PHP 버전:7.1.3

운전사:pdo_mysql

charset:UTF8

dsn:"mysql:host=mysql;dbname=데이터베이스;charset=UTF8;"

어떤 아이디어가?

해결책

MySQL8 변경된 기본 문자셋을 utfmb4. 그러나 어떤 클라이언트 don't know 이 charset. 따라서 때 서버에서 기본 문자셋을 클라이언트,클라이언트는't know what 서버는 의미,그것은 발생이 오류가 있습니다.

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

는 버그에 대한 MySQL 커넥터/C++그's 보다 더 많은 영향을 미치는 그냥 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

이 설정에서 응답에서 2010:https://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf

해설 (7)

은 받아들이 대답 저장(감사합니다,청구서!!!), 하지만 나는 다른 관련 문제,그냥 몇 가지 세부 정보를 제공 내에서의 경험-

한 후 업그레이드 MySQL8.0.11 동물의 세계,더불어 문제로 사용하는 경우 PHP'smysqli_connect()기능이 있습니다. 내 MySQL 디렉터리(내 경우,usr/local/mysql),만들었습니다my.cnf파일에 추가,콘텐츠에 접수 응답,다음 다시 시작 MySQL 서버입니다. 그러나,이는 새로운 생산 오류가:

mysqli_connect():The server requested authentication method unknown 클라이언트[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

해설 (3)

나를 위해 작동된다;

환경

localhost
Windows 10
PHP 5.6.31
MYSQL 8

설정:

default-character-set=utf8

에:

c:\programdata\mysql\mysql 서버 8.0\my.ini

*지에서 작동>`C:\Program Files\MySQL\MySQL Server5.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/
해설 (1)

를 직면하고 있었는 동일한 문제도 다시 설치 MySQL8 과 다른 인증 방법"사용하여 기존 인증 방법(을 유지 MySQL5.×호환성)"그런 다음 제대로 작동합니다.

선택하는 두 번째의 방법은 인증을 설치하는 동안.

행운을 빕니다!

해설 (0)

내 경우에는 사용 RDS(mysql db 혼란 8)의 AWS 와 연결하고 있었 내 응용 프로그램을 통해 EC2(내 php 코드 5.6 에 EC2).

여기에서이기 때문에 그것은 RDS 없 my.cnf 매개 변수를 유지하여 매개변수의 그룹 권한을 부여할 수 있습니다. 참고: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.6mysql8.x 작업을했다.

이게 도움이 되었으면 좋겠습니다.

하시기 바랍 이 이미지에 대한 더 나은 이해합니다. 입력한 이미지는 여기에 설명

해설 (0)

섹션[MySQLi]에서당신의php.ini 추가인mysqli.default_charset="UTF-8"입니다. 비슷한 변경 내에 필요한 섹션[Pdo_mysql][mysqlnd]`.

을 가진 MySQL 버전 8.0 및 위한 솔루션을 발견한 작업 PHP 버전 7.2 및 솔루션 안't 과 함께 작업 PHP7.0

해설 (1)

저는 이 문제를 해결을 추가하여 다음과 같은 코드로,/etc/my.cnf파일

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

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

을 저장한 후에는,나는 시스템 설정을 중지 MYSQL 서버를 다시 시작된 경우,그리고 일했다.

해설 (0)

나는 같은 문제에 연결하는 로컬 시스템입니다.

체크에서 서비스 목록(실행->서비스입니다.msc>Enter)wampmysqld64 은 중지되었습니다.

다시 시작됩니다. 과를 얻을 수 있습니다.

해설 (0)