관리 메뉴

나만을 위한 블로그

[PHP] sql 오류 (1366) Incorrect String value 에러 해결 본문

PHP

[PHP] sql 오류 (1366) Incorrect String value 에러 해결

참깨빵위에참깨빵 2020. 3. 10. 00:43
728x90
반응형

이 에러는 MySQL에서 한글을 읽지 못해서 생긴 오류다.

난 하이디 SQL을 써서 MySQL에 접속하기 때문에 하이디 SQL을 기준으로 설명한다.

 

이미 테이블을 만들었다고 가정하고, 생성된 테이블을 클릭하면 왼쪽에 옵션 탭이 보인다. 이걸 클릭한다.

 

기본 오른쪽에 있는 옵션을 누르면 된다.

그럼 이 화면이 나온다.

 

기본 조합을 주목해야 한다. 난 latin 뭐시기로 돼 있어서 euckr_korean_ci로 바꿔주었다.

데이터 변환 체크박스도 클릭해서 체크한 다음 밑의 저장을 누른다. 저장 누르면 체크된 게 풀리는데 신경 안써도 된다.

그럼 하단의 박스에 SQL문들이 빠르게 올라가는데 맨 처음 문장이 이것이다.

 

ALTER TABLE `테이블이름`
COLLATE='euckr_korean_ci',
CONVERT TO CHARSET euckr;

 

기존에 만들었던 테이블이 euckr_korean_ci로 바뀌었고 charset은 euckr로 바뀌었다. 이게 나왔다면 테이블에 한글을 입력할 수 있게 된다.

이제 쿼리 탭으로 넘어가서 다시 쿼리를 해보면 잘 되는 걸 확인할 수 있다.

외부접속해서 쿼리 때리는 게 아닌 MySQL 쉘에서 작업하는 사람이라면 ALTER 문을 쿼리한 후 quit으로 MySQL을 나온 다음 MySQL 서비스를 재시작하면 된다.

 

 

예시를 들어본다. 먼저 테이블은 대충 이렇게 만들었다고 가정한다.

 

 

이 상태에서 옵션을 누르면 위 이미지의 윗공간에 바로 이런 화면이 나온다.

테이블 별 데이터 유형과 기본값을 정해준 다음에 옵션을 누르자.

 

 

기본 조합 옆을 보면 난 euckr 뭐시기로 돼 있지만 테이블을 처음 만들고 옵션에서 여길 보면 latin1로 돼 있을 것이다.

위 이미지처럼 euckr_korean_ci로 바꾼 다음 데이터 변환을 체크하고 저장한다. 말했다시피 저장 버튼을 누르면 데이터 변환 체크박스의 체크가 해제된다.

그 다음 쿼리 탭을 열어서 INSERT문으로 대충 데이터를 집어넣어본다.

 

 

반응형
Comments