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 확인하는 법"
'DB > SQL' 카테고리의 다른 글
[MariaDB] 데이터를 insert한 시각을 저절로 기록되게 하려면? (0) | 2020.12.16 |
---|---|
[MariaDB] 컬럼명 바꾸기 (0) | 2020.12.15 |
[MariaDB] 테이블 내 숫자들을 더하려면 SUM 함수 (0) | 2020.12.05 |
[MariaDB] 테이블 중간에 있는 N개 행 읽는 방법 (0) | 2020.12.05 |
[MariaDB] 쿼리문을 실행했을 때 뜬 warning 내용 확인하기 (5) | 2020.11.28 |
[MariaDB] root 계정 패스워드 변경하는 방법 (5) | 2020.11.28 |
[MariaDB] 우분투에 MariaDB 설치하는 방법 (0) | 2020.11.28 |
[sqlite3] 컬럼에 디폴트 값 주기 (0) | 2020.11.26 |