상황 :
1. Google Cloud Platform의 SQL을 사용하여 서비스중
2. 이모지 데이터 입력시 "Error: Incorrect string value: '\xF0\x9F\x8C\xBC \xEC...' for column ..." 오류발생
3. Table과 Column들은 이미 다 생성된 상태
1. GCP SQL 변경
[GCP console] - [SQL] - 변경할 DB서버 선택 후, 우측 [메뉴] 클릭, [수정] 클릭 - 구성옵션 플래그
플래그를 열어서 데이터베이스 플래그 character_set_server를 추가합니다.
값은 utf8mb4로 선택합니다.
저장.
2. Database Character 변경
// 변경
SET NAMES utf8mb4;
ALTER DATABASE databaseName CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
// 확인
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
3. Database Table Character 변경
// 변경
ALTER TABLE databaseName.tableName DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci;
4. Database Table Column Character 변경
// 변경
ALTER TABLE databaseName.tableName MODIFY columnName text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Column 변경시, 기존 컬럼의 정보를 정확하게 다시 입력해주고 SET 이후 부분을 수정해야한다.
기존 컬럼 정보라고하면 Not Null 이나 Auto Increment 등....
일괄적으로 변경하는 방법을 찾지못했다.
ToDo List가 무척 많아서 급하게 에러나는 곳만 수정했다.
============================================================================
내 경우에는 Table까지 변경해도 Character 들이 자동으로 바뀌지 않았다.
아래 스택오버플로우 게시글을 보면 테이블까지 변경 뒤에 문제가 해결되었나보다.
그래서 컬럼까지 업데이트하는 방안으로 해결한 것이다.
테스트해보니 [3. Database Table Character 변경] 과정 없이 필요한 컬럼에 대해서만 [4. Database Table Column Character 변경]을 진행해도 이모지 데이터를 입출력할 수 있었다.
참고:
stackoverflow.com/questions/20411440/incorrect-string-value-xf0-x9f-x8e-xb6-xf0-x9f-mysql
stackoverflow.com/questions/23766959/set-google-cloud-sql-character-set-server
'DB' 카테고리의 다른 글
[MongoDB] Index 걸기 및 주의사항 (0) | 2022.02.24 |
---|---|
[MongoDB] 기본 CRUD 방법과 예시 (0) | 2022.02.04 |
[GCP] MySQL timezone 타임존 변경 (0) | 2020.06.08 |
[MSSQL] 배치파일을 이용해 주기적으로 DB 백업하기, 파일 삭제하기 (0) | 2020.05.07 |
[ec2][centOS][mysql] mysql 설치, 유저 생성, 디비생성, 권한 부여 (0) | 2019.12.17 |