MySQL 테이블의 특정 필드에 한글을 insert하다보면 아래와 같은 에러가 발생하는 경우를 만날수 있다.
ERROR 1366 (HY000): Incorrect string value: ...
kkk라는 테이블이 아래와 같은 형식으로 생성되어 있다고 가정하면,
mysql> show create table kkk;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
| kkk | CREATE TABLE `kkk` (
`bdid` bigint(11) unsigned NOT NULL,
`name` varchar(80) NOT NULL,
PRIMARY KEY (`bdid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
위와 같이 kkk라는 테이블이 있을 경우 DEFAULT CHARSET=latin1으로 되어 있다.
이때 한글을 name 필드에 insert하게 되면 아래와 같은 에러가 발생한다.
mysql> insert into kkk (bdid, name) values (1, '한글입력');
ERROR 1366 (HY000): Incorrect string value: '\xED\x95\x9C\xEA\xB8\x80...' for column 'name' at row 1
이 문제 해결을 위해서는 default character set을 utf8로 변경해 주면 깨끗이 해결된다.
kkk라는 테이블을 생성하는 DDL 문에서 아예 utf8로 설정해서 테이블을 생성해 주면 된다.
다음과 같이
CREATE TABLE `kkk` (
`bdid` bigint(11) unsigned NOT NULL,
`name` varchar(80) NOT NULL,
PRIMARY KEY (`bdid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
'MySQL' 카테고리의 다른 글
MySQL의 외부 IP 접속 허용하기 (0) | 2018.05.01 |
---|---|
Data too long for column 에러 해법 : MySQL의 sql_mode 변경하기 (0) | 2017.06.19 |
MySQL table의 필드 값이 한글일 경우 Java 소스에서 SELECT 실패할 경우 (0) | 2017.06.01 |
MySQL table로부터 DDL 추출하기 (0) | 2017.06.01 |
mysqlimport명령어를 이용하여 로컬의 텍스트 파일이나 dump파일을 MySQL db의 table에 값 저장하기 (0) | 2017.05.18 |