[MySQL] 언어설정: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
글자가 깨진다
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이라서 발생하는 문제라고 한다.
아래 블로그를 참조해서 아래 경로의 설정파일을 편집했다.
MySQL 데이터베이스의 characterset 언어를 UTF8로 변경하기
여전히 간단하게 사용하기에는 가장 좋은 관계형 데이터베이스는 MySQL인 것 같다. 그런데 MySQL에서 가장 흔히 하는 실수가 기본 언어셋을 변경하지 않는 것이다. 과거의 유물이어서 그런 탓이겠
calvinjmkim.tistory.com
설정파일 위치:
# vi /etc/mysql/my.cnf
vi 편집기를 써야해서 이전 포스팅을 셀프 참고했다.
[Internet] Mac 내장 Apache로 웹서버 운영하기
[강의 출처] opentutorials.org/course/3084/18894 웹서버 운영하기 : 맥 - 생활코딩 자신의 운영체제에 맞는 수업을 찾아서 학습해주세요. 맥에 웹서버 설치하기 웹서버와 http 웹브라우저와 웹서버의 통신
hayjo.tistory.com
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은 그대로 유지된다는 사실을 알았다.
데이터베이스의 글자 설정을 바꿔보았다.
MySQL 한글 깨짐 현상 해결하기(UTF8)
nesoy.github.io
여전히 안 된다. 더 찾아보니 테이블을 변경하는 CONVERT 명령어가 있다.
mysql> ALTER TABLE 테이블명 CONVERT TO CHARACTER SET utf8;
[MYSQL] 테이블, 컬럼 charset 변경
http://b1ix.net 으로 블로그를 이전 했습니다. mysql에서 charset 관련해서 흔히 실수하는 부분이 있는데,...
blog.naver.com
드디어 성공!