2017-11-27 18 views
0

에 UTF8에서 정렬 저는 현재 다음과 같은 설정으로 MySQL 데이터베이스를 가지고 :MySQL의 데이터베이스 변경 + 테이블은 캐릭터 및 UTF8mb4

character_set_client: utf8 
character_set_connection: utf8 
character_set_database: utf8 
character_set_filesystem: binary 
character_set_results: utf8 
character_set_server: latin1 
character_set_system: utf8 
collation_connection: utf8_general_ci 
collation_database: utf8_general_ci 
collation_server: latin1_swedish_ci 

나는 데이터베이스에 이모티콘의과 (중국어 등) 다른 언어를 지원합니다. 현재 작동하지 않는 문자는 ?으로 자동 변환됩니다.

charset & collationutf8mb4(_general_ci)으로 테스트 데이터베이스를 만들고 같은 설정을 가진 테이블을 만들었습니다. Emojis가 여기서 일합니다. 그러나 데이터베이스 설정을 utf8(_general_ci)으로 변경하고 테이블을 utf8mb4(_general_ci)으로 남겨두면 이모티콘은 여전히 ​​작동하지만 내 메인 데이터베이스에서는 그렇지 않습니다.

기본 데이터베이스 설정을 charset + collationutf8mb4(_general_ci)으로 변경하면 테이블도 같이 작동합니까?

데이터베이스 액세스의 경우 character_set_connection 또는 collation_connection과 같이 다른 사항을 변경해야합니까? 내 JavaScript 서버에서 연결이 utf8으로 구성되어 있음을 알고 있습니다.이 메시지는 utf8mb4으로 가정합니다.

모든 현재 utf8(_general_ci) 데이터는 utf8mb4(_general_ci)으로 변경할 때 그대로 유지됩니까?

답변

0

올바르게 저장된 utf8 문자는 utf8mb4로 올바르게 변환됩니다.

또한 연결이 utf8mb4라고 지정해야합니다.

'물음표'에 대한 설명은 this을 참조하십시오.

는 utf8mb4에 모든 문자/텍스트 열을 변환하려면이 답변

ALTER TABLE tbl MODIFY COLUMN col ... CHARACTER SET utf8mb4; 
+0

감사 :

ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4; 

하나의 열을 변환합니다. 이것이 내가 필요한 것입니다. 그럼 또 다른 일이 있습니다. 데이터베이스는 2 개의 개별 서버에서 실행되며'master-master replication'을 사용하여 동기화됩니다. 칼럼 설정이 테이블 셋팅이 아니라 둘 모두에서 변경되는 것을 보았습니다. 두 데이터베이스 모두에서이 작업을 수행 할 수 있습니까? 감사! – JeroenJK

+0

@JeroenJK - 서버가 동일하지 않은 것이 이상하게 보입니다. 정확히 어떤 명령을 수행 했습니까? _may_는 나중에 각 문자셋에 _different_'DEFAULT '를 주면 charset/collation을 지정하지 않고 열을 추가 할 때 발생합니다. –