본문 바로가기

개발이야기

iwinv DB (phpMyAdmin) 에서 '불쾌'한 오류

반응형

특정 조건에서 mysql db  insert error 가 발생하는것을 발견했다. 

'불쾌' 라는 단어는 아무 문제 없이 입력이 잘 되는데,,, 
'아니라 불쾌하다' 처럼 '쾌' 자가 특정 문자열과 결합될때 DB 입력이 안되는 문제가 발생했다.


chatGPT 에게 물어봤다.
질문 >
'불쾌' 라는 단어는 디비에 입력이 잘 되는데... '아니라 불쾌하다' 라는 문구는 입력이 안되는 문제가 발생해. 문제가 뭘까?

GPT 답변 >
MySQL에서 흔히 사용하는 문자셋 utf8은 실제로는 3바이트까지의 유니코드 문자만 지원합니다.
하지만 '쾌'나 일부 이모지, 복합문자는 4바이트로 인코딩될 수 있습니다.
이때, MySQL 테이블이나 컬럼이 utf8로 설정되어 있으면 4바이트 문자 입력 시 에러가 납니다.
이때 필요한 건 utf8mb4 문자셋입니다.
utf8mb4는 MySQL에서 진짜 “완전한 유니코드(최대 4바이트)“를 지원합니다.
삽질 >
DB 커넥션 부터 테이블 문자셋 바꾸고 칼럼 수정하고 새벽에 오만 삽질을 다해봤으나 결국 안되었고,,
//DB 커넥션시 문자셋 지정 
$conn->set_charset("utf8mb4");


//테이블 문자셋 변경 
ALTER TABLE 'tableName' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 
 
 
결론 >
혹시나 하는 마음에 iwinv 호스팅업체 웹방화벽을 off 시켰더니 모든 문제가 해결됨.
웹방화벽에서 무슨 필터를 거나 ?

 

반응형