mysql 테이블 한글 insert 안될 때 조치 방안
안녕하세요.
mysql 테이블에 insert 작업을 할때 한글이 입력 안될 때가 있어 난감하신 적이 있으실 겁니다.
아래와 같은 에러 메시지와 함께 한글이 안되는 증상이 나타나실 텐데요.
Incorrect string value: '\xE3\x84\xB4\xE3\x85\x87...' for column
데이터 베이스에서 한글 입력이 불가할 때 생기는 현상입니다.
이럴 때는 우선 해당 데이터 베이스의 캐릭터 셋을 확인 해보셔야 합니다.
SELECT schema_name , default_character_set_name
FROM information_schema.schemata ;
위 쿼리를 통해서 데이터 베이스의 케릭터 셋을 확인해보시면 아래와 같은 결과가 나올 겁니다.
여기에서 빨간 박스 안에 character_test라는 database의 캐릭터 셋이 latin1이라고 되어 있는 것을 확인할 수 있습니다.
이상태에서 테이블을 한번 만들어 보겠습니다.
create table character_test.test1
(
text varchar(100)
);
이 테이블에 영문 데이터, 한글 데이터를 순차적으로 insert 해봅니다.
insert into character_test.test1 values ('hello?!');
insert into character_test.test1 values ('안녕하세요');
그러면 첫 번째 insert 문은 잘 입력이 되나, 두번째 한글 데이터는 입력이 되지 않고 에러메시지가 떨어지게 됩니다.
Incorrect string value: '\xE3\x84\xB4\xE3\x85\x87...' for column
위 테이블을 select 해보도록 하겠습니다.
select * from character_test.test1;
역시나 첫번째 영문 데이터만 입력이 된 것을 확인할 수 있습니다.
그럼 이번에는 캐릭터 셋을 지정해서 테이블을 생성해보도록 하겠습니다.
create table character_test.test1
(
text varchar(100)
) charset = utf8;
젤 아래 보시면 charset = utf8;이라는 구문이 추가된 것을 보실 수 있습니다.
이렇게 만든 상태에서 다시 insert 문을 입력해보도록 하겠습니다.
insert into character_test.test1 values ('hello?!');
insert into character_test.test1 values ('안녕하세요');
그리고 select를 다시 해보겠습니다.
select * from character_test.test1;
그럼 결과는 짜잔!
한글 데이터까지 잘 입력이 된 것을 확인할 수 있습니다.
이렇게 테이블 생성 시 캐릭터 셋을 지정 하여 만들수도 있으나, 데이터 베이스를 생성 할때 부터 케릭터셋을 지정하여 만드실수도 있고, 이미 생성된 데이터 베이스라면 alter문으로 케릭터 셋을 변경할 수도 있습니다.
#데이터베이스 생성 시 케릭터셋을 설정해 주는 방법
CREATE DATABASE database_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
CREATE DATABASE database_name DEFAULT CHARACTER SET euckr COLLATE euckr_korean_ci ;
#Alter 명령으로 데이터베이스의 케릭터셋을 변경 하는 방법
ALTER DATABASE database_name DEFAULT CHARACTER SET utf8 ;
위와 같은 방법으로 여러분들의 소중한 데이터가 잘 지켜지길 바랍니다.
감사합니다!
by.sTricky
'Database > mariaDB administrator' 카테고리의 다른 글
판매 테이블 테스트용 데이터 생성 및 다운로드 (3) | 2020.04.06 |
---|---|
mysql 에러 메시지 Global Error Message Reference 조치 방안 (1) | 2020.03.17 |
MySQL 8.0 테이블스페이스 관리 방법 변경 내용 feat.테이블 스페이스 삭제 한다면?! (2) | 2020.02.19 |
MySQL의 다양한 실행 프로그램 mysqld_safe, mysql.server, mysqld_multi feat.mysqld (0) | 2020.02.18 |
[mariadb] autocommit 설정과 트랜잭션 개념과 성질 (0) | 2020.01.30 |