L'alyblog

Aller au contenu | Aller au menu | Aller à la recherche

mardi, mai 5 2009

mysql ne veut plus répondre

La bonne blague ^^

mercredi, décembre 27 2006

Encodage dans mysql

A la suite d'une erreur de type :

Illegal mix of collations (latin1_general_ci,IMPLICIT) and

(cp1251_general_ci,COERCIBLE) for operation 'like'

je me suis demandé à quel niveau l'encodage cp1251_general_ci intervenait puisque mon éditeur de texte encode en utf-8, ainsi que l'encodage spécifié dans ma page xhtml et l'interclassement de ma base de données.

Avec la commande :

SHOW VARIABLES LIKE 'char%'

Voici ce que MySql retourne :

character_set_server  	cp1251
character_set_system 	utf8
character_set_database 	latin1
character_set_client 	utf8
character_set_connection 	utf8
character-sets-dir 	/usr/local/share/mysql/charsets/
character_set_results 	utf8

Sur FreeBsd, MySql dispose de plusieurs configurations par défaut, selon le type d'utilisation et la puissance du serveur. Les fichiers de configuration par défaut se trouve ici :

/usr/local/share/mysql/my-huge.cnf
/usr/local/share/mysql/my-large.cnf
/usr/local/share/mysql/my-medium.cnf
/usr/local/share/mysql/my-small.cnf

Pour personnaliser la configuration de MySql, il suffit de déplacer le fichier par défaut sélectionné dans :

/etc/my.cnf

Pour modifier l'encodage, j'ai ajouté ces lignes :

#Set the default character set.
default-character-set=latin1
#Set the default collation.
default-collation=latin1_swedish_ci

dans la section [client] et [mysqld].

Les encodages et interclassements disponibles sont dans le répertoire définit par la variable character-sets-dir vue précédemment.