mysql에 저장할 때, 아이콘, 이모지가 저장 안 되는 문제 해결
✅, 🔥 이런 이모지를 글에 저장할 때, UTF-8으로 설정했다면 위와 같은 에러 메세지를 받을 수 있다.
해결방법은 간단하다.
AWS RDS의 parameter group(파라미터 그룹)을 변경하면 된다.
파라미터 그룹의 편집에 들어가서
character_set으로 검색해서 나온 항목들을 모두
utf8 -> utf8mb4 로 수정한다.
그리고 변경 사항 저장을 하기 전에
아래처럼 collation으로 검색해서 나온 결과
collation_connection, collation_server를
utf8_general_ci -> utf8mb4_unicode_ci 으로 수정한다.
RDS 설정을 자동으로 업데이트 하게 해둿다면
RDS 데이터베이스에 수정 중 상태에 있을 것이고
아니라면 재부팅해서 파라미터 그룹이 반영되도록 하면 된다.
만약 반영되지 않는다면
EC2에 사용하고 있는 백엔드가 RDS와 제대로 연결되어 있는지 확인하고
그 RDS 데이터베이스가 파라미터 그룹과 연결되어 있는지 확인하기 바란다.
내용 추가
위 내용으로 적용하고 나서 일부 이모지는 저장이 되지만 일부는 여전히 에러를 발생하는 것으로 확인했다.
우선, 위 설정이 제대로 적용됐는지 확인하자.
SHOW GLOBAL VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
여전히 이모지 적용이 안된다면,
파라미터 그룹 수정 외에도 직접 Workbench로 들어가서 아래처럼 설정하면 된다.
ALTER TABLE {테이블이름} CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
sql 쿼리를 실행할 때, 테이블 이름만 사용한다면 database(schema)가 선택되어있는지를 꼭 확인한다.
참고로 본 프로젝트는 spring boot 프레임워크를 사용하고 있다.
아래 내용을 application.yml에 추가하기도 했지만 여전히 적용되지 않았다.
하지만 이 설정들도 영향을 줬을지 모르니 추가하겠다.
&character_set_server=utf8mb4&useUnicode=true
spring:
datasource:
url: jdbc:mysql://{AWS RDS public IP}?useSSL=false&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true&character_set_server=utf8mb4&useUnicode=true
username: {username}
password: {password}
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
connection-init-sql: "SET NAMES 'utf8mb4'"
참고사항
https://www.letmecompile.com/mysql-utf8-utf8mb4-migration/
https://velog.io/@dnrgus1127/MySql-데이터베이스에-이모지-문자-저장하기
'프로젝트' 카테고리의 다른 글
[소마] 로그인 페이지 서버사이드 mvc 구현에서 endpoint 호출로 수정 (0) | 2024.01.17 |
---|---|
[소마] application.properties 에 노출되면 안되는 값을 암호화하자 (0) | 2024.01.15 |
[소마] 젠킨스로 CI/CD 구현하기 - (2) 젠킨스 빌드 유도부터 배포 완료 (0) | 2023.09.29 |
[소마] 젠킨스로 CI/CD 구현하기 - (1) 설치부터 배포 ec2와 연결, plugin (0) | 2023.09.27 |
[소마] 세팅하지 않은 alias 문제와 alias command (0) | 2023.06.28 |