>  기사  >  데이터 베이스  >  MySQL은 이모티콘 아이콘 저장을 지원합니다.

MySQL은 이모티콘 아이콘 저장을 지원합니다.

藏色散人
藏色散人앞으로
2019-10-28 14:33:292605검색

MySLQ에서 UPDATA 및 INSERT 데이터를 사용할 때 데이터에 ?, ?, ?와 같은 이모티콘 아이콘이 있으면 쉽게 업데이트되거나 삽입에 실패하여 오류가 발생합니다.

Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: 
Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...' for column 'name' at row

거의 무너지긴 했지만 다행히 이 유령 문제는 드디어 해결되었습니다. 데이터에 나타난 이유는 MYSQL 5.5 이전에는 UTF8 인코딩이 1~3바이트만 지원하고, BMP 부분의 유니코드 인코딩 영역만 지원했고, 이모티콘 아이콘은 우연히 4바이트 인코딩으로 저장되었기 때문이다. MYSQL5.5부터 4바이트 UTF 인코딩 utf8mb4가 지원될 수 있습니다. 문자는 최대 4바이트를 가질 수 있으므로 더 많은 문자 집합을 지원할 수 있습니다. 따라서 문제를 해결하려면 데이터베이스 테이블의 모든 문자 인코딩을 utf8mb4로 변경해야 합니다.

추천: mysql 비디오 튜토리얼

공통 문자 세트

ASCII: American Information Interchange Standard Encoding, 영어 및 기타 서유럽 언어, 1바이트 인코딩, 총 128자.

GBK: 2바이트, 한자 내부 코드 확장 사양, 중국어, 일본어 및 한국어 한자, 영어, 숫자 총 21,003자의 한자가 포함됩니다. GB2312.

UTF-8: 유니코드 표준 가변 길이 문자 인코딩, 전 세계 수십 개의 텍스트 시스템을 포함한 업계의 통합 표준인 유니코드 표준; UTF-8: 1~3바이트를 사용하여 각 문자를 인코딩합니다.

utf8mb4: 4바이트를 저장합니다. 이모티콘 표현은 4바이트일 수 있으므로 애플리케이션 시나리오는 이모티콘 표현을 저장하는 데 사용됩니다.

utf8mb4: MySQL 버전 > 5.5.3.

기타 일반적인 문자 집합: UTF-32, UTF-16, Big5, latin1

데이터베이스의 문자 집합에는 두 가지 수준의 의미가 포함되어 있습니다

#🎜🎜 #Each 다양한 국가의 문자, 구두점, 그래픽 기호, 숫자 등을 포함한 문자 및 기호 모음입니다.

문자의 인코딩 방법, 즉 바이너리 데이터와 문자 간의 매핑 규칙입니다.

시스템 환경

MySQL 5.7.14

Mac OSX 10.11.6

#🎜🎜 #

먼저 백업하세요

데이터 업그레이드 전 서버에 있는 모든 데이터를 백업해두시고, 좋은 습관 유지, 안전이 최우선!

MySQL 업그레이드

새 데이터베이스는 여기에서 다운로드할 수 있습니다MySQL 서버를 v5.5.3으로 업그레이드하세요#🎜 🎜 #.

데이터베이스, 테이블, 필드 수정

# 对每一个数据库:
ALTER DATABASE 这里数据库名字 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# 对每一个表:
ALTER TABLE 这里是表名字 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 对每一个字段:
ALTER TABLE 这里是表名字 CHANGE 字段名字 重复字段名字 VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 上面一句或者使用modify来更改
ALTER TABLE 这里是表名字 modify 字段名字 VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '';
utf8mb4는 잘못된 문자나 다른 형태의 데이터 손실 없이 utf8과 완전히 역호환됩니다. 이론상으로는 걱정 없이 수정할 수 있습니다. 수정에 자신이 없다면 백업에서 데이터를 복원한 다음 프로그래머가 이모지 호환 저장 문제를 처리하도록 하여 저장할 수 있습니다. , 검색할 때 다시 변환하시겠습니까? ... 데이터베이스를 수정하는 것이 더 편리합니다.

필드와 인덱스 확인

모든 것을 utf8mb4로 설정하지 마세요. 필수입니다. 내 필드 유형 중 일부가 VARCHAR인 경우에만 utf8mb4로 설정했습니다.

MySQL 구성 파일 수정

여기가 가장 혼란스럽습니다. Mac OSX에서 /etc/my.cnf를 찾을 수 없습니다. system 은 전혀 존재하지 않으므로 그러한 파일을 생성하고 수정해야 합니다.

# 进入这个目录,
# 在这个目录下面有个后缀为`.cnf`的文件
cd /usr/local/mysql/support-files/
# 将这个文件复制到`etc`目录中并将名字命名为`my.cnf`
sudo cp my-default.cnf /etc/my.cnf
# 然后编辑`my.cnf`文件,将下面内容复制到里面。
sudo vim /etc/my.cnf
MySQL 구성 파일(/etc/my.cnf):

[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
RestartMySQL

다시 시작 단계는 매우 중요합니다. 그렇지 않으면 아무런 효과가 없습니다.

시작:/usr/local/mysql/support-files/mysql.server 시작

중지:/usr/local/mysql/support-files/mysql.server 중지

Restart:/usr/local/mysql/support-files/mysql.server restart

시스템은 이 형식으로 다시 시작, 중지 또는 시작할 수 있습니다

service mysqld stop
service mysqld start
service mysqld restart
# 🎜🎜#

설정 성공 여부 확인

다음 명령어를 사용하여 설정 성공 여부를 확인해보세요!

# 登陆MySQL进行查询
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
# 运行上面代码显示下面结果
# +--------------------------+--------------------+
# | Variable_name            | Value              |
# +--------------------------+--------------------+
# | character_set_client     | utf8mb4            |
# | character_set_connection | utf8mb4            |
# | character_set_database   | utf8mb4            |
# | character_set_filesystem | binary             |
# | character_set_results    | utf8mb4            |
# | character_set_server     | utf8mb4            |
# | character_set_system     | utf8               |
# | collation_connection     | utf8mb4_unicode_ci |
# | collation_database       | utf8mb4_unicode_ci |
# | collation_server         | utf8mb4_unicode_ci |
# +--------------------------+--------------------+
# 查看表的情况
mysql>  SHOW FULL COLUMNS  FROM  users_profile;

이 시점에서는 성공했다는 의미입니다! 축하해요! ~

테이블 복구 및 최적화

이 단계에 도달했으며 테이블을 복구하고 최적화할 필요가 없습니다. 안전한 측면에서, 저는 이 두 명령을 읽었습니다. 비록 그 용도가 무엇인지는 모르겠지만, 여기에 넣고 메모해 두겠습니다.

REPAIR TABLE 表名字;
OPTIMIZE TABLE 表名字;

위 내용은 MySQL은 이모티콘 아이콘 저장을 지원합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제