일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 객체지향
- 쿠키
- over()
- spring security 로그인정보 가져오기
- 혼공얄코
- spring security 설정
- java
- CPU
- mvc 구성요소
- 리눅스
- 자바의 정석
- @modelattibute
- charset 변경
- SQL Mapper
- 멀티프로세싱
- 자바의정석
- 티스토리챌린지
- 로그인정보 가져오기
- mvc 동작
- 오블완
- 오버로딩
- 캡슐화
- 오버라이딩
- spring security
- 입출력
- hackerrank
- 다형성
- sec태그
- 멀티태스킹
- Today
- Total
쉽게 쉽게
[MariaDB] Incorrect string value 에러(charset 변경) 본문
▤ 목차
1. 이슈
MariaDB에서 이모지를 저장할 때, Incorrect string value 에러가 나타났다.
해당 원인을 분석해보니 MariaDB에 설정된 charset은 UTF8이 해당 이모지를 지원하지 않았기 때문이다.
UTF-8은 최대 3바이트 지원하지만 이모지는 4바이트가 필요하기 때문에 이를 저장하기 위해서는 utf8mb4 캐릭터셋을 사용해야 했다.
따라서 UTF-8을 utf8mb4로 변경하는 과정이 필요했다.
2. 캐릭터셋(charset) 변경
1. 캐릭터셋과 정렬방식 확인
SELECT default_character_set_name, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA
WHERE schema_name = '테이블명';
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
해당 명령어를 통해 현재 DB의 Charset(캐릭터셋)과 Collation(정렬방식)이 어떤지 확인할 수 있다.
2. 캐릭터셋과 정렬방식 수정
ALTER DATABASE 테이블명 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE 테이블명 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
해당 명령어를 통해 DB의 Charset(캐릭터셋)과 Collation(정렬방식)을 변경할 수 있다.
위와 같이 수정했다면 MariaDB에 디폴트로 적용되어 있는 설정도 수정해야 한다.
보통은 /etc/my.cnf에 DB설정 정보가 위치해 있고 utf8을 utf8mb4로, utf8-general-ci를 utf8mb4-unicode-ci로 수정해야 한다.
3. DB설정 수정
//수정전
[mysqld]
...
character-set-server=utf8
collation-server=utf8_general_ci
[client]
...
default-character-set=utf8
/etc/my.cnf에 접속하여 위의 설정을 아래처럼 수정해줬다.
//수정후
[mysqld]
...
character-set-server=utf8mb4
collation-server=utf8mb4-unicode-ci
[client]
...
default-character-set=utf8mb4
필자는 vi 명령어를 통해 수정했는데, 필요하다면 아래의 내용을 참고하길 바란다.
2024.03.17 - [서버/리눅스] - 리눅스 명령어 정리
만약 my.cnf 파일수정시 readonly option is set (add to override) 오류가 뜨는 경우
:w! => 강제로 저장하기 기능을 사용하거나 root계정으로 접근하여 다시 시도해보면 된다.
설정 변경 후 MariaDB를 재시작해주면 된다.
systemctl restart mariadb;
https://riverblue.tistory.com/36
잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |
'DB > MYSQL와 MariaDB' 카테고리의 다른 글
[MariaDB]MariaDB에서 오라클 DB 연동 (0) | 2024.08.12 |
---|---|
[MariaDB] 이클립스 MariaDB와 연동하기 (0) | 2024.08.06 |
[MYSQL] 윈도우 함수 정리 (0) | 2024.07.08 |
[MYSQL] select문에 count 여러개 (0) | 2024.07.04 |
MariaDB 대소구분 해결 (0) | 2024.03.21 |