2010-12-14 2 views
0

어떻게 해결할 수불법 혼합 및 운영 (latin1_swedish_ci, 강제 할 수있는) '='

"Illegal mix of collations (latin5_turkish_ci,IMPLICIT) 
and (latin1_swedish_ci,COERCIBLE) 
for operation '='" problem? 

내 쿼리 : select * from up where name='camış'

연결 옵션 :

SET NAMES 'latin5' 
SET character_set_connection = 'latin5' 
SET collation_connection = latin5_turkish_ci 

- collate를 latin5_turkish_ci로 변경했지만 작동하지 않습니다. 사이에, 몇 분 (많은 쿼리) 후 문제 자체가 사라집니다.

SELECT * 
    FROM up 
WHERE CONVERT(name USING latin5) COLLATE latin5_turkish_ci = 'camış' 

좋은 생각이 원하는 문자 세트에 모든 열을 변환하는 것입니다 (이것은 UTF-8이어야 함) :

+3

camış의 의미는 무엇입니까? –

답변

0

이 오히려 나쁜 생각 만 작동합니다.

[+] 변환하는 것은 테이블/열의 기본 데이터 정렬을 변경하지 않고 데이터를 변환하는 것을 의미합니다. 그래서 대상 문자 집합으로 새 열을 만들고 UPDATE table SET new_column = CONVERT(old_column USING characterset)으로 채우고 이전 열을 삭제하고 새로운 열을 바꿉니다.

+0

감사합니다. 나는 이걸 얻는다. 하지만 이미 alter table을 사용하여 테이블의 문자 집합을 변경했습니다. 거기에 또 다른 mysql 문이 있습니까? – wonnie

+0

솔루션 일 수있는 업데이트 된 답변보기 –

관련 문제