Come configurare il set di caratteri globale su MySQL


12

Ho provato a cambiare il set di caratteri per il nostro MySQL tramite my.cnf e non è riuscito. Ho aggiunto le impostazioni del set di caratteri elencate di seguito:

# 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

Quando li ho abilitati, MySQL non è stato avviato. Come posso assicurarmi che tutto sia impostato su utf8, sempre?

Aggiornare

Ci sono ancora alcuni posti che hanno problemi ad essere 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

Sfortunatamente non ho ancora trovato un soluton ... qualche idea?

Attualmente sto usando questa configurazione con successo:

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


[mysql]
default-character-set = utf8

Ma PHPMyAdmin mostra ancora un po 'di latino1

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

Risposte:


23

Devi incorporare quanto segue nel tuo file 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

Puoi trovare maggiori informazioni nelle seguenti pagine di manuale

In risposta alla risposta di Mark, se è necessario convertire tabelle / database esistenti nel set di caratteri corretto, sarà necessaria una ALTERquery adatta . Qualcosa di simile al seguente:

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

In alternativa c'è un grande script PHP qui che fa per voi.


Ho seguito le tue istruzioni e verificato i collegamenti alla documentazione ... ancora

Ogni volta che aggiungo collation-server = utf8_general_cialla mysqldsezione mysql non si riavvia

Puoi vedere cosa c'è nel file di registro? Dovrebbe darti un messaggio di errore sul perché non è riuscito. Suppongo che il tuo mysqld sia stato compilato con il set di caratteri generali utf8 incluso?

Sì, penso che fosse ... quale file di registro?

1
Funziona per me (Debian 8, MySQL 5.5), ad eccezione della default-character-set = utf8riga nella [mysqld]sezione. L'aggiunta di questa riga comporta il riavvio di mysqld per sempre. Il supporto Unicode, tuttavia, funziona benissimo anche senza questa linea.
Bass

2

La risposta di Ben è ok, ma la modifica delle impostazioni NON ASSOLUTAMENTE altererà i set di caratteri o le regole di confronto delle tabelle esistenti. Fallo con un'istruzione ALTER TABLE appropriata.

Se non lo si specifica, le tabelle vengono create nel set di caratteri predefinito del database. Questa è un'impostazione per database che può essere regolata con ALTER DATABASE. Anche questo non è impostato in my.cnf.


1
I nuovi database erediteranno comunque le impostazioni mysql predefinite, giusto?
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.