MySQL'de genel karakter seti nasıl yapılandırılır


12

MyCQL için karakter setini my.cnf üzerinden değiştirmeye çalıştım ve başarısız oldu. Aşağıda listelenen karakter ayarlarını ekledim:

# 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

Bunları etkinleştirdiğimde, MySQL başlatılamadı. Her şeyin varsayılan olarak utf8 olarak ayarlandığından nasıl emin olabilirim - her zaman?

Güncelleme

UTF8 olmakta hala sorun olan birkaç yer var

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

Ne yazık ki hala bir çözüm bulamadım ... herhangi bir fikir?

Şu anda bu yapılandırmayı başarıyla kullanıyorum:

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


[mysql]
default-character-set = utf8

Ancak PHPMyAdmin hala bazı latin1 gösteriyor

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

Yanıtlar:


23

Aşağıdakileri my.cnf dosyanıza eklemeniz gerekir

[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

Aşağıdaki kılavuz sayfalarda daha fazla bilgi bulabilirsiniz

Mark'ın cevabına yanıt olarak, mevcut tabloları / veritabanlarını doğru karakter setine dönüştürmeniz gerekiyorsa uygun bir ALTERsorguya ihtiyacınız olacaktır . Aşağıdakine benzer bir şey:

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

Alternatif olarak , sizin için yapan harika bir PHP betiği var .


Talimatlarınızı izledim ve dokümantasyon bağlantılarını kontrol ettim ... hala birkaç sorun yaşıyorum (bkz. ^)

Ben eklediğinizde collation-server = utf8_general_ciiçin mysqldbölüm mysql yeniden başarısız

Günlük dosyasında ne olduğuna bakabilir misiniz? Size neden başarısız olduğuna dair bir hata mesajı vermelidir. Ben mysqld dahil utf8 genel karakter kümesi ile derlendi al?

Evet bence ... hangi günlük dosyası?

1
Benim için çalışır (Debian 8, MySQL 5.5), bölüm default-character-set = utf8altındaki satır hariç [mysqld]. Bu satırın eklenmesi, mysqld'in yeniden başlatılması sonsuza kadar sürmesine neden olur. Ancak Unicode desteği, bu hat olmadan bile harika çalışıyor.
Bass

2

Ben'in cevabı tamam, ancak ayarları değiştirmek KESİNLİKLE mevcut tabloların karakter kümelerini veya harmanlamalarını DEĞİŞTİRMEYECEKTİR. Bunu uygun bir ALTER TABLE ifadesiyle yapın.

Belirtmezseniz, tabloların veritabanı varsayılan karakter kümesinde oluşturulduğunu unutmayın. Bu, ALTER DATABASE ile ayarlanabilen bir veritabanı başına ayardır. Bu, my.cnf dosyasında da ayarlanmamıştır.


1
Yeni veritabanları varsayılan mysql ayarlarını devralacak, değil mi?
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.