Cara mengkonfigurasi charset global di MySQL


12

Saya mencoba mengubah charset untuk MySQL kami melalui my.cnf dan gagal. Saya menambahkan pengaturan charset yang tercantum di bawah:

# 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

Ketika saya mengaktifkan ini, MySQL gagal memulai. Bagaimana saya bisa memastikan semuanya default utf8 - selalu?

Memperbarui

Masih ada beberapa tempat yang mengalami masalah dalam menjadi 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

Sayangnya saya masih belum menemukan soluton ... ada ide?

Saat ini saya berhasil menggunakan konfigurasi ini:

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


[mysql]
default-character-set = utf8

Tapi PHPMyAdmin masih menunjukkan beberapa 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

Jawaban:


23

Anda perlu memasukkan yang berikut ke dalam file my.cnf Anda

[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

Anda dapat menemukan informasi lebih lanjut di halaman manual berikut

Menanggapi jawaban Mark, jika Anda perlu mengonversi tabel / database yang ada ke set karakter yang benar, Anda akan memerlukan ALTERkueri yang sesuai . Sesuatu yang mirip dengan di bawah ini:

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

Atau ada skrip PHP hebat di sini yang melakukannya untuk Anda.


Saya telah mengikuti instruksi Anda dan memeriksa tautan dokumentasi ... masih memiliki beberapa masalah (lihat ^)

Setiap kali saya menambahkan collation-server = utf8_general_cike mysqldbagian mysql gagal untuk me

Bisakah Anda melihat apa yang ada di file log? Seharusnya memberi Anda pesan kesalahan mengapa gagal. Saya bawa mysqld Anda dikompilasi dengan set karakter utf8 umum termasuk?

Ya saya pikir itu ... file log yang mana?

1
Bekerja untuk saya (Debian 8, MySQL 5.5), kecuali untuk default-character-set = utf8baris di bawah [mysqld]bagian. Menambahkan baris ini akan membuat mysqld membutuhkan waktu lama untuk memulai kembali. Dukungan Unicode, bagaimanapun, berfungsi dengan baik meskipun tanpa baris ini.
Bass

2

Jawaban Ben baik-baik saja, tetapi mengubah pengaturan TIDAK BENAR-BENAR mengubah set karakter tabel yang ada atau kumpulan. Lakukan itu dengan pernyataan ALTER TABLE yang sesuai.

Perhatikan bahwa jika Anda tidak menentukannya, tabel dibuat di set karakter default database. Ini adalah pengaturan per-basis data yang dapat disesuaikan dengan ALTER DATABASE. Ini juga tidak diatur di my.cnf.


1
Database baru akan mewarisi pengaturan default mysql, kan?
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.