MySQL Error 1366: incorrect string value

Wookoa 2024. 7. 16.

incorrect string value
incorrect string value

머리말

  MySQL 데이터베이스에 테이블을 설계하고 데이터를 입력할 때 incorrect string value 오류가 발생했다. 스트링 값이 올바르지 않다는 메시지인데, 데이터베이스에서 받아들이는 문자열은 정상적인 문자열이 아니었다. 본 포스팅에서는 MySQL Error 1366 오류코드에 대해서 해결 방법을 소개하도록 한다.

Error 1366

  입력된 문자열이 올바르지 않다는 오류 코드인데, 대부분 서버와 클라이언트의 캐릭터 셋이 일치하지 않아서 발생하는 오류다. 본인의 MySQL 서버는 UTF-8 캐릭터 셋으로 설정되었고, 쿼리를 수행하는 클라이언트 프로그램은 EUC-KR 캐릭터 셋이었다.

Error 1366 <HY000I>: Incorrect string value: '\xC7\xD1\xB1\xDB\xC0\xD4...' for column 'Descrip' at row 1

error 1366 오류 발생
error 1366 오류 발생

  본인의 캐릭터 셋은 모두 utf8 설정인데 클라이언트 세션이 만료되기 전까지 일시적으로 캐릭터 셋을 변경할 수 있다. 서버 자체의 캐릭터 셋을 변경하는 것은 기존의 데이터가 망가질 위험이 있으니 충분히 고려한 뒤 변경이 필요하다. 하지만 클라이언트의 캐릭터를 일시적으로 변경하는 것은, 해당 세션의 스트링만 일시적으로 지정된 캐릭터 셋으로 변경되어 처리하기 때문에 실제로 저장되는 데이터는 서버의 캐릭터 셋을 따른다. 클라이언트의 캐릭터 셋을 변경하는 명령어는 아래와 같다.

SET character_set_client = euckr;
SET character_set_connection = euckr;
SET character_set_results = euckr;
MySQL 캐릭터 셋 확인
MySQL 캐릭터 셋 확인

꼬리말

  캐릭터 셋은 간단히 생각하면 어렵지 않다고 느껴질 수 있지만, 생각보다 매우 간단하지 않은 영역이다. 경우에 따라, 데이터가 클라이언트 디스크에서부터 서버의 디스크까지 네트워크를 통해 흘러가는 모든 과정을 살펴야 하는 경우도 발생한다. MySQL 데이터베이스에서 발생하는 1366 에러코드에 대해서 소개한 본 포스팅은 이로써 마무리를 짓도록 한다.

인기있는 글

소중한 댓글 (0)