2016-10-25 4 views
1

테이블이 CHARACTER SET=utf8mb4으로 설정된 데이터베이스가 있지만, mysql 연결 (SET NAMES)이 latin1이라는 것을 발견했습니다.SET NAMES가 테이블의 문자 집합과 일치하지 않으면 어떻게됩니까?

내 질문은 :

  1. 데이터에 어떻게됩니까? MySQL은 이것을 utf8mb4으로 변환했거나 데이터를 latin1으로 저장 했습니까?
  2. 변환해야 할 경우 SET NAMES latin1으로 연결하여 데이터를 가져 와서 변환 한 다음 다시 넣거나 utf8mb4으로 연결하여 데이터를 꺼내야하나요?

답변

3

데이터는 테이블에 정의 된 문자 세트에 저장되므로 모든 데이터는 utf8mb4에 저장됩니다.

데이터베이스에 연결할 때마다 데이터를 보내고 받기 위해 문자 집합을 사용합니다. 문자 집합은 다를 수 있으므로 mysql은 저장 문자 집합과 연결 문자 집합 사이를 변환합니다.

질문에 대한 답변 :

1) mysql이이를 변환합니다.

2) 변환 할 필요가 없습니다. 그러나 set names을 사용하는 경우 실제로는 사용자가 주장하는 문자 집합을 사용하여 데이터를 보내고 있는지 확인해야합니다.

여기에 더 있습니다. http://dev.mysql.com/doc/refman/5.7/en/charset-connection.html

+0

잘 설명되어 있습니다. 이것은 멍청한 놈의 일반적인 문제입니다. –

관련 문제