

heidiSQL을 통해 mysql 세션에 접속해서 실행하는 중이었다. 그러나 insert문이 계속 오류가 뜨길래 제대로 오류문을 봤더니 아래와 같이 한글 값이 깨져서 들어간 점을 발견.
/* SQL 오류 (1366): Incorrect string value: '\xEC\xB6\x95\xEA\xB5\xAC...' for column 'bookname' at row 1 *
이를 해결하기 위해서는 일단 mysql이 어떤 타입의 인코딩으로 설정되어 있는지를 확인해야 합니다.
관리자 모드로 cmd를 켜주신 다음, mysql을 실행하기 위해 MySQL Server 5.7(혹은 8.0)이 있는 경로로 들어갑니다.


| mysql 설치 경로로 이동, mysql server 폴더 | cd C:\Program Files(혹은 x86)\MySQL\MySQL Server 5.7 |
| bin 폴더로 경로 이동 | cd bin |
| mysql root계정으로 로그인 시도, 패스워드 입력 | mysql -u root -p |
| mysql 상태 확인 | status |
status로 characterset을 확인해보시면 latin1과 euckr로 구성되어 있음을 확인할 수 있습니다.
이 부분들이 utf-8로 바뀌어야 제대로 인코딩이 되어 값을 넣을 수 있습니다.

My.ini 파일이 있는 경로로 들어가줍니다. 저의 경우 ProgramData경로에 있습니다.
My.ini파일은 mysql에서 설정하는 정보가 들어있는 설정 파일입니다.
My.ini파일을 메모장으로 열어줍니다.



my.ini파일에서 가능하면 아무것도 건들지말고 아래 내용을 복사/붙여넣기로 추가해줍니다.
[client]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
skip-character-set-client-handshake
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8

실행 -> [services.msc]입력 ->[MySql 재시작]
설정 파일을 제대로 적용되었음을 확인하기 위해 MySql을 재시작합니다.

다시 cmd로 들어가 맨 처음 mysql폴더로 이동해서 로그인한 것과 동일한 방식으로 실행합니다.
mysql 접속 후 status 명령어를 입력하면 characterset이 utf-8로 바뀐 것을 확인할 수 있습니다.
여기서 유의해야 할 것은, 이미 생성한 database와 table은 인코딩 타입이 바뀌지 않고 새로 생성한 database와 table만 적용이 됩니다. 즉, 이미 생성한 database와 table은 직접 쿼리문을 통해 인코딩 타입을 utf-8로 바꾸어 주어야 합니다.

alter database madang default character set UTF8;
Query OK가 실행 결과로 뜬다면, 제대로 적용이 되었습니다.
특정 데이터베이스의 한글 깨짐 문제를 해결한 뒤에도 실행 -> [services.msc]입력 ->[MySql 재시작] 을 해야 합니다.
'Back-End > SQL' 카테고리의 다른 글
| [Mysql]HeidiSQL UTF-8 설정, 한글 깨짐 (0) | 2021.11.26 |
|---|