2016-08-15 3 views
3

mysql 데이터베이스의 연결 데이터 정렬을 변경하려면 어떻게해야합니까?MySQL의 연결 데이터 정렬을 변경하는 방법

내가 MySQL의 워크 벤치 5.5을 사용하고 내가 저장 프로 시저를 실행하면 mysql을 5.5

우분투 14에서 오류가 발생합니다

오류 코드 : 정렬의 1267. 불법 믹스 (utf8_general_ci, IMPLICIT) 및 운영) (utf8_unicode_ci, IMPLICIT '='

내가 수정하는 임시 솔루션을 인터넷,하지만 검색이

COLLATE utf8_unicode_ci; 

저장 프로 시저에서.

하지만 나중에 모든 저장 프로 시저에 대해이 문제를 해결하고 싶습니다. 나는 이것을 찾았습니다.

SHOW VARIABLES LIKE 'collation%'; 

collation_connection utf8_general_ci 
collation_database utf8_unicode_ci 
collation_server latin1_swedish_ci 
어떻게 utf8_unicode_ciutf8_general_ci을 변경할 수 있습니다

?

[mysqld] 
init_connect='SET collation_connection = utf8_unicode_ci' 
init_connect='SET NAMES utf8' 
character-set-server=utf8 
collation-server=utf8_unicode_ci 
skip-character-set-client-handshake 

이로 정렬 변수를 변경됩니다 : 당신의 my.cnf

+0

첫째, MySQL의 워크 벤치 버전이 너무 오래되었습니다. 다시 시도하기 전에 업데이트하십시오. – Raptor

+0

오류 메시지가 표시된 쿼리와 관련 테이블에 대한 'SHOW CREATE TABLE'을 보자. 또한,'SHOW VARIABLES LIKE 'char %';'. –

답변

2

봐, 아래의 내용 collation_server 근처 찾을

이 collation_connection utf8_unicode_ci collation_server latin1_swedish_ci

MySQL 서버 서비스를 다시 시작하는 것을 잊지 마십시오 .

는 DB 데이터 정렬 들어, 다음과 같은 SQL 사용할 수 있습니다 (! 항상 최신 버전이 업데이트)

ALTER DATABASE <database_name> CHARACTER SET utf8 COLLATE utf8_unicode_ci; 

을하거나 MySQL의 워크 벤치에 바꿔 데이터베이스 화면에서 그것을 할 수

+4

'root'로 연결할 때'init_connect'는 무시됩니다. –

0

첫째, I 오류 메시지는 저장 프로 시저 (연결)의 데이터 정렬로 인해 테이블과 일치하지 않는다고 생각합니다. 하지만 내가 틀렸어, 그 이유는 열의 데이터 정렬이 테이블의 데이터 정렬과 일치하지 않기 때문이다.

내 경우에는 'utf8_unicode_ci'와 (과)의 열의 데이터 정렬로 변경하고 싶습니다.

alter table <YourTableName> 
    MODIFY <YourColumnName> VARCHAR(XXX) COLLATE 'utf8_unicode_ci'; 

하는 정렬의 변화는 데이터 손실이 발생할 수 있음을 유의하시기 바랍니다 : 그래서 나는이 문을 실행했다. 나를 위해 일반 -> 유니 코드, 모든 영어는 varchar 열에 있습니다. 아무 것도 없다.

추가 읽기 : 모든 http://dev.mysql.com/doc/refman/5.7/en/charset-column.html

http://dev.mysql.com/doc/refman/5.7/en/charset-connection.html

http://dev.mysql.com/doc/refman/5.7/en/charset-database.html