[Database] MySQL 한글입력오류

JungChihoon·2020년 1월 26일
2

Database

목록 보기
1/5
post-custom-banner
사용환경

- 우분투 버전: 18.04.1 
- MySQL버전: 5.7.29

프로젝트 테스트 중 로그인을 해서 테스트를 하다가 한글을 입력했을 때 다음과 같은 오류가 발생했다.
mysql> ERROR 1366 (HY000) : incorrect string value : ''\xED\x95\x9C\xEC\x9A\xB0...' for column 'name' at row 1
검색을 해보니 MySQL에서 처음 설치하고 설정을 변경해주지 않았을 경우 데이터베이스쪽에서 에러가 생기는 문제인 것을 확인하였다.

현재 나의 MySQL에서 show variables like 'c%'명령으로 언어설정에 대해 확인 해 보니
image.png
image.png

다음과 같이 나왔다.
(원래 character_set_client와 character_set_results 부분도 latin1이었다. 당시 캡쳐를 못해둬서..)

그리고 Ubunut에서 MySQL 설정을 변경하는 위치를 알아보았다.

위의 링크를 참조해 sudo vi /etc/mysql/my.cnf를 실행해 아래의 내용을 추가하여 설정을 변경하기로 했다.

1. client 부분 아래에 추가
[client]
default-character-set = utf8

2. mysqld 부분 아래에 추가
[mysqld]
init_connect = SET collation_connection = utf8_general_ci
init_connect = SET NAMES utf8
character-set-server = utf8
collation-server = utf8_general_ci

3. mysqldump 부분 아래에 추가
[mysqldump]
default-character-set = utf8

4. mysql 부분 아래에 추가
[mysql]
default-character-set = utf8```

하지만 내 경우에 해당위치인 ```my.cnf```에서 참조문서와 다르게 위의 내용을 추가할 부분이 없이 
```javascript
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/```
라는 것만 있어 어떻게 처리해야하는지 고민을 하던 중 아래의 링크에서 MySQL버전 5.5이상에서는 my.cnf 에 include룰이 생겨서 변경되었기 때문이라고 해서 내 경우에서 처리해야하는 방법을 알아보았다.

답변에 my.cnf가 바뀐이유 설명과 참조:
- https://hashcode.co.kr/questions/2174/%EC%9A%B0%EB%B6%84%ED%88%AC%EC%97%90%EC%84%9C-mysql-%ED%95%9C%EA%B8%80%EC%84%A4%EC%A0%95

```sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf``` 터미널에서 해당위치에 vim을 실행했다.

![image.png](https://velog.velcdn.com/post-images%2Fjch9537%2Faee8e1a0-4433-11ea-a046-178c7b269e2e%2Fimage.png)

그런데 client와 mysqlId, mysqldump, mysql부분이 나의 경우와 달라 어디에 명령어를 넣어야 할지 헤멨다. 
![image.png](https://velog.velcdn.com/post-images%2Fjch9537%2F913836f0-4434-11ea-a046-178c7b269e2e%2Fimage.png)
- 명령어 삽입위치:
http://develop.sunshiny.co.kr/385
위의 링크를 통해 명령어 삽입 위치를 확인 후 내용을 붙여 넣고 싶었는데 vi나 vim사용법을 몰라 내용을 넣을 수가 없었다. (뭔가 험난하다...)

vi명령어정리 : 
- https://blockdmask.tistory.com/25

위의 링크에서 vi명령어를 확인 후 해당 명령어를 삽입한다.


![image.png](https://velog.velcdn.com/post-images%2Fjch9537%2F90fee200-4435-11ea-a046-178c7b269e2e%2Fimage.png)

저장 후 나간 뒤 테스트 해본다.

![image.png](https://velog.velcdn.com/post-images%2Fjch9537%2F50948620-4025-11ea-97f8-4d587fb9b054%2Fimage.png)
![image.png](https://velog.velcdn.com/post-images%2Fjch9537%2F9397b770-4026-11ea-82b1-e798a521fbf9%2Fimage.png)

성공적이었다. 그리고 테스트를 해보았는데 같은 오류가 발생한다. (생각보다 어렵다.)
다시 찾아보니 이미 만들어진 database이기 때문에 아래 링크와 같이 character set을 해줘야 하는 것이었다.

- 추가작업(character set 변경):
https://www.hooni.net/xe/study/79498
```ALTER TABLE table_name convert to charset utf8;```table마다 명령어로 처리해 준다


![image.png](https://velog.velcdn.com/post-images%2Fjch9537%2Fad8d3970-4026-11ea-8d17-4d039f3a57c8%2Fimage.png)

![image.png](https://velog.velcdn.com/post-images%2Fjch9537%2Fe86305c0-4026-11ea-82b1-e798a521fbf9%2Fimage.png)

### 성공!

전체적인 참조 링크 
(각각의 상황과 사용환경이 다르므로 전체적인 해결과정을 이해 후 개별적으로 맞춰서 처리를 해줘야 할 것 같다) 
명령어:. 
- 참조 링크 1 :
https://iyc1030.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%9A%B0%EB%B6%84%ED%88%AC-MYSQL-%ED%95%9C%EA%B8%80-%EC%84%A4%EC%A0%95
- 참조 링크 2: 
https://www.lesstif.com/pages/viewpage.action?pageId=20775198


profile
주니어 개발자
post-custom-banner

1개의 댓글

comment-user-thumbnail
2024년 9월 27일

I had a great experience with the medical school letter of recommendation service at https://www.lorservice.com/ They took the time to understand my background and crafted a letter that emphasized all the right points. It was well-written, professional, and definitely took a lot of stress off my plate. If you’re applying to med school, I highly recommend checking them out!

답글 달기