비즈니스 측에서 일부 사용자 정보를 삽입하지 못했다고 보고했으며 오류 메시지는 "잘못된 문자열 값:"xF0xA5...."와 유사했습니다. 이 메시지는 특정 희귀 문자를 지원하지 않는 문자 집합으로 인해 발생해야 합니다. 해결 방법 이 글은 MySQL 희귀 문자 삽입 실패 문제를 해결하는 방법에 관한 것입니다.
다음은 가상 머신에서 재현된 시나리오입니다.
원래 테이블 구조 문자 세트를 시뮬레이션합니다. 환경:
use test; CREATE TABLE `t1` ( `id` int(10) NOT NULL AUTO_INCREMENT, `real_name` varchar(255) CHARACTER SET utf8 DEFAULT '' COMMENT '姓名', `nick` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '昵称', PRIMARY KEY (`id`) ) ENGINE=InnoDBAUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会员卡';
step2. 희귀 문자 삽입(sqlyog 사용):
1. 먼저 온라인 환경을 시뮬레이션하고 문자 세트를 설정합니다.
2. 다음을 참조하세요: http://www.qqxiuzi.cn/zh/hanzi-unicode- bianma.php?zfj=kzb&ks=24E20&js=257E3)
Wang을 삽입하려고 합니다(단어에 Alt를 누른 상태에서 152964를 입력합니다). ) 삽입이 실패한 것을 확인할 수 있습니다.
3단계에서 real_name의 문자 집합을 수정합니다.
use test; alter table t1 change real_name real_name varchar(255) CHARACTER SET utf8mb4 DEFAULT '' COMMENT '姓名' ;
대규모 온라인 테이블인 경우 pt-osc를 사용하여 처리할 수 있습니다. :
pt-online-schema-change -uroot -h localhost --alter=" change real_name real_name varchar(255) CHARACTER SET utf8mb4 DEFAULT '' COMMENT '姓名' " D=test, t=t1 --no-check-replication-filters --alter-foreign-keys-method=auto --recursion-method=none --quiet --charset=utf8mb4 --dry-run
pt-online-schema-change -uroot -h localhost --alter=" change real_name real_name varchar(255) CHARACTER SET utf8mb4 DEFAULT '' COMMENT '姓名' " D=test, t=t1 --no-check-replication-filters --alter-foreign-keys-method=auto --recursion-method=none --quiet --charset=utf8mb4 --execute
4단계. 실험을 다시 삽입합니다.
1. 먼저 문자를 설정합니다.
2. 다시 삽입하면 삽입이 성공한 것을 확인할 수 있습니다.
명령줄에서 쿼리할 때 왜곡된 코드가 없습니다. 그렇습니다. 관련 권장 사항:한자 변환을 지원하는 php의 개발 예입니다. 희귀 문자에 대한 병음
PHP 한자를 희귀 문자를 지원하고 자동으로 UTF-8 인코딩을 인식하는 병음으로 변환 Class_PHP Tutorial
위 내용은 MySQL이 희귀 문자를 삽입하지 못하는 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!