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 |