[SQL] 연습

[DB] mysql에서 한글 포함된 쿼리 insert 안될 때

Simon Yoon 2022. 6. 11. 23:53

mysql에서 새로운 스키마를 생성하고 새로운 테이블을 생성하여 데이터를 직접 입력할 때

쿼리문에 한글이 포함된 데이터를 입력하는 경우 오류가 발생한다면,

해당 스키마와 테이블의 캐릭터 셋을 확인해야 합니다.

 

예를 들어, 아래와 같은 쿼리를 입력하고자 했을 때

INSERT INTO
    `shop_db`.`member` (`member_id`, `member_name`, `memberc_addr`)
VALUES
    ('tess', '나훈아', '경기 부천시 중동')
;

다음과 같이 에러가 발생하면서 Response에 아래와

같은 메세지가 나온다면 Character Set을 설정해주시면 됩니다.

Error Code: 1366. Incorrect string value: '\xEB\x82\x98\xED\x9B\x88...' for column 'member_name' at row 1

 

먼저, mysql 워크벤치의 왼쪽 Schemas 에서 수정이 필요로 하는 데이터베이스를 선택하고

마우스 오른쪽 버튼을 눌러서 Alter Schema...를 선택해줍니다.

아래의 예시에서는 shop_db 위에서 마우스 오른쪽 클릭 후 Alter Schema...에 파란색 하이라이트가 되어 있는 것을 볼 수 있습니다.

 

그러고나면 Schema Editor 화면으로 들어오게 되는데, 여기서 Character Set을 확인해보면 latin1일 가능성이 있습니다.

이 부분을 utf-8로 바꿔주셔야 합니다.

 

utf-8로 바꾸고 apply를 클릭해준다.

 

이후 나오는 창에서는 캐릭터 셋 변경을 위한 sql 쿼리문을 직접 확인할 수 있습니다. 여기서도 당연히 apply를 클릭해주면 됩니다.

만약 직접 쿼리문을 작성한다면 아래와 같이 작성하면 됩니다.

alter schema 'shop_db' default character set utf8;

 

이렇게 수정된 테이블에서 다시 insert 문이 잘 입력되는지 확인해보고 그래도 안되면 table의 캐릭터 셋을 바꿔야 할수도 있습니다.

만약 테이블도 수정이 필요하다면, 해당 테이블을 선택하고 마우스 오른쪽 클릭으로 alter table... 에 들어가 줍니다.

 

아래의 예시에서 member_name과 member_addr이 한글이 입력되는 부분이라면 한개씩 Charset을 변경해주면 됩니다. 이후 나오는 쿼리 확인창에서도 동일하게 apply를 클릭해주면 됩니다.

 

이제 다시 insert문을 실행해보면 잘 데이터가 추가되는 것을 확인할 수 있으실 겁니다.

물론 당연히 쿼리문으로 변경할 수도 있지만 이러한 방법이 있다는 것을 소개하는 차원에서 이번 포스팅을 작성하였습니다. 해당 문제가 발생하면 한번 시도해보시면 좋을 것 같습니다.

 

'[SQL] 연습' 카테고리의 다른 글

[SQL] CASE문  (0) 2022.07.02
[SQL] View의 특징과 생성 및 삭제  (0) 2022.06.26
[DB] MongoDB  (0) 2022.05.01
[SQL] SQL 기본(3편)  (0) 2022.02.01
[SQL] SQL 기본(2편)  (0) 2022.01.30