일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @GeneratedValue
- @GenericGenerator
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Callback
- case when
- CCW
- chat GPT
- CICD
- Collections
- Combination
- combinations
- Today
- Total
기록
TIP/AWS RDS MariaDB-incorrect string value: '\xed\x9a\x8c \xec\x9d...' 본문
TIP/AWS RDS MariaDB-incorrect string value: '\xed\x9a\x8c \xec\x9d...'
youngyin 2024. 9. 27. 12:00MariaDB는 다양한 문자셋을 지원하지만, 데이터베이스를 설정할 때 적절한 인코딩을 선택하지 않으면 한글이 깨지거나 오류가 발생할 수 있습니다. 예를 들어, 한글이 포함된 문자를 데이터베이스에 저장하려고 할 때, 아래와 같은 오류가 발생할 수 있습니다.
incorrect string value: '\xed\x9a\x8c \xec\x9d...'
이러한 문제는 데이터베이스의 문자셋 설정이 잘못되었거나, 테이블의 인코딩이 일치하지 않을 때 발생합니다. 따라서 AWS RDS에서 MariaDB를 사용하기 전, 인코딩 설정을 먼저 변경하는 것이 매우 중요합니다.
문제 발생 원인
문제가 발생하는 주된 원인은 데이터베이스와 테이블의 문자셋이 일치하지 않거나, 클라이언트와 서버 간의 인코딩 설정이 다를 때입니다. 예를 들어, 클라이언트에서 UTF-8로 데이터를 전송했지만, 데이터베이스가 EUC-KR로 설정되어 있다면, 한글 데이터가 깨져 저장될 수 있습니다. 이러한 문제를 예방하기 위해서는 데이터베이스와 테이블의 인코딩을 일관되게 설정해야 합니다.
데이터베이스 인코딩 설정 방법
AWS RDS에서 MariaDB를 사용할 때, 데이터베이스 인코딩을 설정하는 방법은 크게 두 가지가 있습니다. 첫 번째는 SQL 명령어를 통해 세션 레벨에서 일시적으로 변경하는 방법이고, 두 번째는 AWS RDS의 파라미터 그룹을 수정하여 영구적으로 변경하는 방법입니다.
1. 현재 인코딩 확인하기
먼저, 현재 데이터베이스와 테이블의 인코딩 값을 확인하는 것이 중요합니다. 아래 SQL 명령어를 사용하여 현재 인코딩을 확인할 수 있습니다:
-- 현재 데이터베이스 인코딩 확인
SELECT DEFAULT_CHARACTER_SET_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = 'matq_dev';
-- 현재 테이블 인코딩 확인
SELECT TABLE_NAME, CCSA.character_set_name AS character_set_name
FROM information_schema.`TABLES` T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation
AND T.table_schema = 'matq_dev';
이 명령어를 통해 데이터베이스와 테이블의 인코딩 설정을 확인할 수 있습니다.
2. SQL 명령어를 통한 변경
일시적으로 인코딩을 변경하려면 다음과 같은 명령어를 사용합니다:
-- 스키마 재선언
DROP DATABASE IF EXISTS matq_dev;
CREATE DATABASE matq_dev DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
-- 테이블 인코딩 선언
ALTER TABLE matq_dev.tb_reward CONVERT TO CHARACTER SET utf8mb4;
이 명령어는 현재 세션에서만 적용되므로, 서버를 재시작하면 원래 설정으로 돌아갑니다.
3. AWS RDS에서 파라미터 그룹 수정
AWS RDS에서는 직접적으로 설정 파일을 수정할 수 없으므로, 파라미터 그룹을 통해 인코딩 설정을 변경해야 합니다. 다음 절차를 따라 진행합니다:
파라미터 그룹 생성:
- AWS Management Console에 로그인한 후 RDS 대시보드로 이동합니다.
- "파라미터 그룹" 섹션에서 새로운 파라미터 그룹을 생성합니다.
파라미터 변경:
- 생성한 파라미터 그룹을 선택한 후,
character-set-server
와collation-server
파라미터를 각각utf8mb4
와utf8mb4_unicode_ci
로 변경합니다.
- 생성한 파라미터 그룹을 선택한 후,
DB 인스턴스에 적용:
- 변경한 파라미터 그룹을 해당 RDS 인스턴스에 연동합니다. 이 과정을 통해 인스턴스가 새 설정을 사용할 수 있도록 합니다.
- 인스턴스를 재시작해야 변경 사항이 적용됩니다.
이렇게 설정하면 AWS RDS에서 MariaDB의 인코딩을 UTF-8로 정상적으로 변경할 수 있으며, 한글 데이터가 깨지지 않고 저장될 수 있습니다
'DevOps' 카테고리의 다른 글
[AWS/SAA-C03] S3 암호화: SSE와 CSE 비교 - 업로드 후 vs 업로드 전 암호화 (0) | 2024.10.12 |
---|---|
[AWS/SAA-C03] Amazon FSx vs EFS: 특별한 기능을 원할 때는 FSx, 관리의 용이성을 원할 때는 EFS (0) | 2024.10.11 |
CICD 파이프라인 구축기(3) - 애플리케이션을 EC2에 배포하기 (0) | 2024.09.23 |
CICD 파이프라인 구축기(2) - Verification Job과 Secrets 관리 (0) | 2024.09.15 |
CICD 파이프라인 구축기(1) - 브런치 전략과 GITACTION (0) | 2024.09.02 |