2017-04-26 7 views
1

최근에 새 WordPress 프로젝트를 시작하면 내 테이블의 데이터 정렬이 자동으로 utf8_unicode_ci (PhpMyAdmin에서 새 DB를 만들 때 선택하는 항목)로 변경되었습니다.) ~ utf8mb4_unicode_520_ci.테이블 CHARSET이 utf8mb4로 설정되고 COLLATION이 utf8mb4_unicode_520_ci로 설정되는 이유

또한 PhpMyAdmin의 일반 설정에서 서버 연결의 데이터 정렬 기본값은 utf8mb4_unicode_520_ci입니다.

저는 우분투 17.04에서 MySQL 서버 5.7.17과 PhpMyAdmin 4.6.6을 실행하고 있습니다.

내 질문에 다음과 같습니다

  1. 왜 이런 일이 무엇입니까?
  2. 가능한 경우 어떻게 방지합니까? utf8mb4 때문에 WP 사이트를 지원하지 않는 구형 MySQL 서버로 마이그레이션 할 때 문제가 발생했습니다.
  3. 포인트 2가 적당합니까? utf8보다 charset utf8mb4를 사용하고 utf8_unicode_ci보다 collation utf8mb4_unicode_520_ci를 사용하면 어떤 이점이 있습니까?

답변

6

과거에는 utf8 만있었습니다. 앞으로 utf8mb4이 기본 문자 집합이됩니다.

과거에는 _general_ci이 기본 조합이었습니다. _unicode_ci (유니 코드 4.0)이 더 좋았다면 _unicode_520_ci (유니 코드 5.20)이었습니다. 앞으로 (MySQL 8.0) 기본값은 _0900_ci_ai (유니 코드 9.0)이 될 것입니다.

한편 도로는 MySQL의 과거 실수로 생긴 움푹 들어간 곳이 가득합니다. 그리고 WP 디자이너들은 움푹 들어간 곳을 알아 채지 못하는 큰 탱크에서 운전하고 있습니다.

MySQL 5.6은 지나치게 긴 WP 번호와 함께 색인에 767 개의 제한이 있고 VARCHAR(255)utf8mb4을 사용할 가능성 때문에 많은 WP 사용자를 삼킨 큰 구멍이었습니다. 당신은 5.7.17을 가짐으로써 그것을 훨씬 넘습니다. (8.0으로 이동하면 덜 울퉁불퉁합니다.)

즉, 5.7.7 이상의 새로 생성 된 데이터베이스/테이블/열은 767 문제를 겪지 않아야하지만 이전 버전 (5.5.3 이상) 특히 뭔가로 인해 utf8mb4로 변경되는 경우 문제가 발생할 수 있습니다.

어떻게해야합니까? 아마도 모든 옵션을 설명하려고 우주를 다 써 버릴 것입니다. 그래서 당신이해야하는 데이터의 역사, 업그레이드 경로 (있는 경우), 현재 설정, 테이블의 ROW_FORMAT, 컬럼의 CHARACTER SETCOLLATION, SHOW VARIABLES LIKE 'char%';

의 출력을 제공? 실용적인 곳이면 5.7.7 이상은 utf8mb4utf8mb4_unicode_520_ci입니다. 그 문자 세트는 당신에게 Emoji와 모든 중국어를 제공합니다 (utf8은 그렇지 않습니다). 그 데이터 정렬은 중요한 부분을 알기가 어려울 지 모르지만 최선의 방법입니다.

참고 : 데이터 정렬 이름의 첫 번째 부분은 함께 작동하는 유일한 문자 집합입니다. 즉 utf8_unicode_ciutf8mb4과 작동하지 않습니다.

+0

위대한 답변, 감사합니다. 릭. 내 유일한 문제는 이전 MySQL 서버로 마이그레이션 할 때 발생했습니다. 향후 참조를 위해 가능한 경우 CHARSET 및 COLLATION을 유니 코드 4.0으로 다시 변환하는 대신 MySQL 서버를 업그레이드하는 것이 좋습니다. 다시 한번 감사드립니다. –

+0

@ ТомицаКораћ - 내 자아를 털어 줘서 고마워.예, 앞으로 이동하십시오. 뒤로 이동하지 마십시오. –

+0

@RickJames 다음 주요 데이터 정렬 버전 지원이 언제 릴리즈 될 것입니까 (예 : '0900_ci_ai') 어디서 개발할 수 있습니까? Google에 인용하면 결과가 0으로됩니다. – John