bskyvision RSS 태그 관리 글쓰기 방명록
2020-12-04 19:32:49
728x90

MariaDB 또는 MySQL을 다루다보면, 한글 데이터가 삽입이 안되고 이런 에러를 만날 때가 있습니다.

 

 

우리 한국인들을 대상으로 어떠한 서비스를 제공하는 상황이라면 더더욱 한글 데이터 삽입이 안 되면 안되겠죠. 이때는 information_schema 데이터베이스 안에 schemata 테이블의 schema_name 컬럼과 default_character_set_name 컬럼을 살펴봐야 합니다. 참고로 information_schema는 MariaDB 설치시 자동으로 만들어지는 데이터베이스입니다. 어? 나 이런 데이터베이스 만든 적 없는데 하고 당황하실 필요없습니다. 

 

MariaDB [test]> SELECT schema_name, default_character_set_name FROM information_schema.schemata;

 

위와 같은 쿼리를 넘거주면, 다음과 같은 결과가 나올 것입니다. 

 

 

지금 저는 test 데이터베이스를 사용하고 있는데, 그 데이터베이스의 defualt_character_set_name이 다른 데이터베이스와는 달리 latin1로 되어 있음을 확인할 수 있습니다. 이래서 한글 데이터 insert가 안되었던 것입니다. 원인을 발견했으니 이제 해결해보겠습니다. 해결법은 저기에 있는 latin1을 utf8로 바꿔주는 것입니다. 

 

 

잘 바뀌었는지 확인해보겠습니다.

 

 

utf8로 잘 바뀌었죠? 그러면 한글 데이터를 다시 insert 해보겠습니다. 

 

 

불행히도, 아까와 똑같은 에러가 떴습니다. 이런 경우에는 지금 사용하는 테이블의 character set도 utf8로 바꿔줘야 합니다. 

 

MariaDB [test]> ALTER TABLE student CONVERT TO CHARACTER SET utf8;

 

여기서 student는 제가 사용하고 있는 테이블이름이니 각자의 테이블이름으로 대체해주시면 되겠습니다. 

 

 

잘 바뀌었는지 확인해보겠습니다. 확인하는 코드는 조금 깁니다.

 

MariaDB [test]> SELECT CCSA.character_set_name FROM information_schema.`TABLES` T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA WHERE CCSA.collation_name = T.table_collation AND T.table_schema = "test" AND T.table_name = "student";

 

여기서 맨 밑에 "test"는 본인의 데이터베이스 명으로, "student"는 본인의 테이블 명으로 바꿔주시면 됩니다. 

 

 

보시다시피 utf8로 잘 바뀌었습니다. 이제 한글이 insert되는지 다시 한번 확인해보겠습니다. 

 

 

드디어 한글입력이 됩니다!

 

 

<참고자료>

[1] www.lesstif.com/dbms/mysql-database-table-character-set-17105743.html, "MySQL database와 table의 character set 확인하는 법"

댓글

방문해주신 모든 분들을 환영합니다.

* 글을 읽던 중에 궁금했던 부분은 질문해주세요.

* 칭찬, 지적, 의문, 격려, 감사표현 등을 남겨주세요.

* 최대한 답변 드리도록 노력하겠습니다.

* 욕설과 광고를 담은 댓글은 가차없이 삭제합니다.


  1. 학생@2021.10.11 23:28 ~$ 감사합니다 이제 작년에 스프링 깔짝 배웠다가 복습하는데 작년에는 잘만 썼는데 갑자기 한글 입력이 안돼가지고 애먹고 있었어요.. 일일이 alter로 바꿔주는 것도 일이고 ㅜㅜ 덕분에 원인을 알았습니다! 감사합니다 [댓글주소]  [수정/삭제]  [답글작성]
guest@이름 ~$
guest@패스워드 ~$
guest@홈페이지주소작성 ~$

guest@댓글작성 ~$




bskyvision. Designed by bskyvision.