-
[MySQL] 언어설정: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD생활코딩/DataBase 2020. 11. 11. 18:23
글자가 깨진다
Node.js mysql 패키지로 MySQL에 데이터를 넣다가 아래 INSERT INTO 구문에서 에러가 발생하는 것을 확인했다.
INSERT INTO topic (title, logo, industry, founded, founders, revenue, description) VALUES ('Microsoft', 'https://uplo ad.wikimedia.org/wikipedia/commons/thumb/9/96/Microsoft_logo_%282012%29.svg/200px-Microsoft_logo_%282012%29.svg.png', 'Software development, Computer hardware, Consumer electronics, Social networking service, Cloud computing, Video ga mes, Internet, Corporate venture capital', 'April 4, 1975', 'BillGates, Paul Allen', '143 billion US dollar (2020)', '(/maɪkroʊ.sɒft/) is an American multinational technology company with headquarters inRedmond, Washington. It develop s, manufactures, licenses, supports, and sells computer software, consumer electronics, personal computers,and relate d services.');
에러는 아래와 같다:
Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xC9\xAAkro\xCA...' for column 'description' at row 1
문제가 되는 데이터는 '(/maɪkroʊ.sɒft/)' 이 부분.
처음에는 백슬래시 관련 이슈인 줄 알고 아래처럼 처리했으나, 소용이 없었다.
string.(/\\/g, '\\\\');
my.cnf 설정에서 latin1 -> UTF8
살펴보니 MySQL 기본 언어가 latin1이라서 발생하는 문제라고 한다.
아래 블로그를 참조해서 아래 경로의 설정파일을 편집했다.
설정파일 위치:
# vi /etc/mysql/my.cnf
vi 편집기를 써야해서 이전 포스팅을 셀프 참고했다.
my.cnf 파일의 맨 아래부분에 아래 내용을 덧붙여주면 된다.
맨아래부분으로 커서를 이동 -> 'i' -> 붙여넣기(ctrl+v) -> ESC -> ':wq'
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8
설정을 마친 후 재시작해보았으나 여전히 에러가 난다. status를 확인해보니 utf8로 제대로 나온다.
기존 데이터베이스 Character Set은 직접 변경해야 한다
아래 블로그를 참조한 결과, 기존에 만들었던 데이터베이스의 character set은 그대로 유지된다는 사실을 알았다.
데이터베이스의 글자 설정을 바꿔보았다.
여전히 안 된다. 더 찾아보니 테이블을 변경하는 CONVERT 명령어가 있다.
mysql> ALTER TABLE 테이블명 CONVERT TO CHARACTER SET utf8;
드디어 성공!
'생활코딩 > DataBase' 카테고리의 다른 글
[MySQL] 데이터 삭제 시 백업 테이블로 데이터 옮겨놓기 (0) 2020.12.01 [MySQL] SELECT EXISTS(SELECT * FROM table WHERE col1 = ''); (0) 2020.12.01 [MySQL] DELETE FROM .. WHERE id IS NULL; (0) 2020.11.08 [MySQL] ALTER TABLE table ... TIMESTAMP (0) 2020.11.08 [MySQL] 테이블 분리와 JOIN (0) 2020.09.28