문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
wiki:mariadb:latin1에서_utf8mb4로_변환하기 [2020/04/22 10:33] hylee |
wiki:mariadb:latin1에서_utf8mb4로_변환하기 [2023/01/13 18:44] (현재) |
||
---|---|---|---|
줄 1: | 줄 1: | ||
- | ====== latin1에서_utf8mb4로_변환하기 ====== | + | ====== latin1에서_utf8mb4로_변환하기 |
<WRAP left notice 80%> | <WRAP left notice 80%> | ||
- | * description : Table Encoding | + | * description : Database |
* author | * author | ||
* email : hylee@repia.com | * email : hylee@repia.com | ||
줄 12: | 줄 12: | ||
> 에러내용 (내부 프로젝트 코** 본문태그 전체를 수집해서 DB에 Insert 할떄 생김) | > 에러내용 (내부 프로젝트 코** 본문태그 전체를 수집해서 DB에 Insert 할떄 생김) | ||
- | * ERROR 1366 (HY000) : incorrect string value : '' | + | * ERROR 1366 (HY000) : incorrect string value : ' |
> 분석 | > 분석 | ||
줄 29: | 줄 29: | ||
3. mariaDB 설정파일에 인코딩 설정을 변경(, 추가) 한다. | 3. mariaDB 설정파일에 인코딩 설정을 변경(, 추가) 한다. | ||
4. dump 파일에 DDL 설정이 utf8mb4인지 확인하고 아니면 utf8mb4로 수정한다. | 4. dump 파일에 DDL 설정이 utf8mb4인지 확인하고 아니면 utf8mb4로 수정한다. | ||
- | 5. dump 파일을 밀어 넣는다. | + | 5. DB에 dump 파일로 data를 복구한다. |
6. mariaDB 재시작 후 DB 인코딩 확인한다. | 6. mariaDB 재시작 후 DB 인코딩 확인한다. | ||
| | ||
줄 63: | 줄 63: | ||
* Dump파일이 utf8 이여야지 DB를 utf9mb4로 변환했을때 깨짐없이 들어간다. | * Dump파일이 utf8 이여야지 DB를 utf9mb4로 변환했을때 깨짐없이 들어간다. | ||
<code bash> | <code bash> | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ==== 3. mariaDB 설정파일에 인코딩 설정 추가 ==== | ||
+ | > 위치 | ||
+ | * /etc/my.cnf | ||
+ | > 추가 코드 | ||
+ | <code bash> | ||
+ | # | ||
+ | # This group is read both both by the client and the server | ||
+ | # use it for options that affect everything | ||
+ | # | ||
+ | [client-server] | ||
+ | |||
+ | # | ||
+ | # include all files from the config directory | ||
+ | # | ||
+ | [mysqld] | ||
+ | default_storage_engine=innodb | ||
+ | innodb_buffer_pool_size=445M | ||
+ | innodb_log_file_size=50M | ||
+ | max_connections = 10000 | ||
+ | connect_timeout = 600 | ||
+ | wait_timeout = 6000 | ||
+ | max_allowed_packet = 2G | ||
+ | thread_cache_size = 128 | ||
+ | sort_buffer_size = 4M | ||
+ | bulk_insert_buffer_size = 16M | ||
+ | tmp_table_size | ||
+ | max_heap_table_size = 32M | ||
+ | default_storage_engine = InnoDB | ||
+ | innodb_buffer_pool_size = 4G | ||
+ | innodb_log_buffer_size | ||
+ | innodb_file_per_table | ||
+ | innodb_file_format | ||
+ | innodb_open_files | ||
+ | innodb_io_capacity | ||
+ | innodb_flush_method | ||
+ | |||
+ | character-set-server=utf8mb4 | ||
+ | collation-server=utf8mb4_general_ci | ||
+ | |||
+ | [client] | ||
+ | port=${Port} | ||
+ | default-character-set = utf8mb4 | ||
+ | |||
+ | [mysqldump] | ||
+ | default-character-set | ||
+ | |||
+ | [mysql] | ||
+ | default-character-set | ||
+ | |||
+ | !includedir / | ||
+ | |||
+ | </ | ||
- | [root@mysql ~]# file -bi ${Backup File Name}.sql | + | |
+ | ==== 4. dump 파일 DDL ==== | ||
+ | * Dump 파일을 열어보면 DDL 코드가 있다. | ||
+ | <code sql> | ||
+ | |||
+ | DROP TABLE IF EXISTS `${Table name}`; | ||
+ | /*!40101 SET @saved_cs_client | ||
+ | /*!40101 SET character_set_client = utf8 */; | ||
+ | CREATE TABLE `${Table name}` ( | ||
+ | `${column}` ${type} NOT NULL, | ||
+ | `${column}` ${type} DEFAULT NULL, | ||
+ | `${column}` ${type} DEFAULT NULL, | ||
+ | `${column}` ${type} DEFAULT NULL, | ||
+ | `${column}` ${type} DEFAULT NULL, | ||
+ | PRIMARY KEY (${column}`) | ||
+ | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||
</ | </ | ||
+ | * 위 DDL을 보면 마지막에 '' | ||
+ | ==== 5. DB에 dump 파일로 data를 복구한다. ==== | ||
+ | |||
+ | * [[https:// | ||
===== Ref ===== | ===== Ref ===== | ||
- | * [[https:// | + | |
- | {{tag> | + | {{tag> |