본문 바로가기
Database/MySQL

[MySQL] Error 1300: Invalid utf8mb4 character string: '' 에러 해결법

by db.sry.22 2025. 5. 23.
LOAD DATA LOCAL INFILE 'data.csv'
INTO TABLE table_name;

> ERROR 1300 (HY000): invalid utf8mb4 character string : ''

 

해당 에러는 파일의 인코딩이 utf8이 아닌데 MySQL Server에 CHARACTER SET utf8mb4로 저장하려는 경우 발생합니다.

 

해결방법은 두가지가 있습니다.

 

  1. MySQL Server에 파일 인코딩을 알려주기
  2. 파일 인코딩을 MySQL Server가 저장하려는 값으로 변경

 

 

1) MySQL Server에 파일 인코딩을 알려주기

# 파일 인코딩 확인
[root@DB data]$ file -i data.csv
data.csv: text/plain; charset=iso-8859-1

 

첫번째 방법과 동일하게 먼저 파일의 인코딩값을 확인한 후, 인코딩값과 매칭되는 MySQL 의 CHARACTER SET 을 찾습니다.

파일 인코딩 확인 결과 (file -i 결과) LOAD DATA에서 사용할 CHARACTER SET
iso-8859-1 latin1
utf-8 utf8mb4
utf-8 with BOM utf8mb4
euc-kr euckr
ks_c_5601-1987 euckr
cp949 cp949
windows-1252 latin1
ANSI_X3.4-1968 ascii
Big5 big5
GB2312, GB18030 gb2312 또는 gb18030
Shift_JIS, SJIS sjis
windows-1251 cp1251
macroman (Mac) macroman

 

파일 인코딩과 올바른 CHARACTER SET을 확인한 후 LOAD DATA를 수행합니다.

 

LOAD DATA LOCAL INFILE 'data.csv'
INTO TABLE table_name
CHARACTER SET latin1;

 

위 예시에서 file -i 로 확인한 charset이 iso-8859-1이므로 CHARACTER SET 옵션을 latin1 으로 설정합니다.

동일 에러가 발생하지 않은 경우 정상 처리된것입니다.

 

 

2) 파일 인코딩을 MySQL Server가 저장하려는 값으로 변경

# 파일 인코딩 확인
[root@DB data]$ file -i data.csv
data.csv: text/plain; charset=iso-8859-1

# 파일 인코딩 변경
[root@DB data]$ iconv -f iso-8859-1 -t utf-8 data.csv -o data_utf8.csv

 

 

위와 같이 인코딩을 변경한 후 LOAD DATA를 수행합니다.

LOAD DATA LOCAL INFILE 'data_utf8.csv'
INTO TABLE table_name;