MySQL에서 글로벌 문자셋을 구성하는 방법


12

my.cnf 를 통해 MySQL의 문자 세트를 변경하려고 시도했지만 실패했습니다. 아래 나열된 문자 세트 설정을 추가했습니다.

# The MySQL server
[mysqld]
port            = 3306
socket          = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

# ------------- MYSQL CHARSETS --------------
character_set_system = utf8
character_set_server = utf8
character_set_results = utf8
character_set_database = utf8
character_set_connection = utf8
character_set_client = utf8

collation_connection = utf8_general_ci
collation_database = utf8_general_ci
collation_server = utf8_general_ci

이 기능을 활성화했을 때 MySQL이 시작되지 않았습니다. 항상 모든 것을 기본값으로 utf8로 설정하려면 어떻게해야합니까?

최신 정보

UTF8이되는 데 여전히 문제가있는 곳이 몇 군데 있습니다

character_set_client    utf8
character_set_connection    utf8
character_set_database  latin1
character_set_filesystem    binary
character_set_results   utf8
character_set_server    latin1
character_set_system    utf8
character_sets_dir  /usr/share/mysql/charsets/
collation_connection    utf8_general_ci
collation_database  latin1_swedish_ci
collation_server    latin1_swedish_ci

불행히도 나는 여전히 해결책을 찾지 못했습니다 ... 어떤 아이디어?

현재이 구성을 성공적으로 사용하고 있습니다.

[mysqld]
default-character-set = utf8
init-connect='SET NAMES utf8'
character-set-server = utf8


[mysql]
default-character-set = utf8

그러나 PHPMyAdmin은 여전히 ​​일부 latin1을 보여줍니다.

character_set_client    utf8
character_set_connection    utf8
character_set_database  latin1
character_set_filesystem    binary
character_set_results   utf8
character_set_server    latin1
character_set_system    utf8
character_sets_dir  /usr/share/mysql/charsets/
collation_connection    utf8_general_ci
collation_database  latin1_swedish_ci
collation_server    latin1_swedish_ci

답변:


23

다음을 my.cnf 파일에 통합해야합니다

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
default-character-set = utf8    
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

다음 매뉴얼 페이지에서 자세한 정보를 찾을 수 있습니다.

Mark의 답변에 따라 기존 테이블 / 데이터베이스를 올바른 문자 집합으로 변환해야하는 경우 적절한 ALTER쿼리 가 필요 합니다. 아래와 비슷한 것 :

ALTER TABLE `table` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

또는 여기에 훌륭한 PHP 스크립트 가 있습니다.


나는 당신의 지시를 따르고 문서 링크를 확인했습니다 ... 여전히 몇 가지 문제가 있습니다 (^ 참조)

섹션에 추가 collation-server = utf8_general_ci할 때마다 mysqldmysql이 다시 시작되지 않습니다

로그 파일에 무엇이 있는지 볼 수 있습니까? 실패한 이유에 대한 오류 메시지가 표시됩니다. mysqld가 utf8 일반 문자 세트로 컴파일되어 있다고 생각합니까?

네 .. 어떤 로그 파일인가요?

1
섹션 default-character-set = utf8아래 줄을 제외하고는 저에게 효과적입니다 (Debian 8, MySQL 5.5) [mysqld]. 이 줄을 추가하면 mysqld가 영원히 다시 시작됩니다. 그러나 유니 코드 지원은이 줄 없이도 잘 작동합니다.
Bass

2

Ben의 대답은 괜찮지 만 설정을 변경해도 기존 테이블 문자 집합이나 데이터 정렬은 절대 변경되지 않습니다. 적절한 ALTER TABLE 문으로이를 수행하십시오.

지정하지 않으면 데이터베이스 기본 문자 세트로 테이블이 작성됩니다. ALTER DATABASE로 조정할 수있는 데이터베이스 별 설정입니다. 이것은 my.cnf에도 설정되어 있지 않습니다.


1
새로운 데이터베이스는 기본 mysql 설정을 상속받습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.