variables serveur MySQL : comment les modifier ?

Mammouth du PHP | 19672 Messages

01 mai 2005, 11:23

J'en appelle aux gourous de la configuration de MySQL;

Dans les variables de serveur, j'en ai trois qui ont une valeur que je voudrais modifier:
- collation_connexion : latin1_swedish_ci
- collation_database : latin1_swedish_ci
- collation_server : latin1_swedish_ci

Je voudrais qu'au lieu de latin1_swedish_ci ce soit latin1 tout court.

D'après le manuel en ligne de MySQL :
Une façon de changer la configuration par défaut est de recompiler MySQL.
Ok, "Une façon", ça sous-entend qu'il y en a d'autre,mais je ne les ai pas trouvé. En ligne de commande, je n'ai pas trouvé non plus. Quant à recompiler.... je suis sous WinXP Pro, et je ne compile rien, j'utilise un installeur, bien incapable de compiler des binaires.

Voilà, si quelqu'un a une solution à me faire partager ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 1380 Messages

01 mai 2005, 11:57

Tu devrais avoir un fichier de configuration qui est lu à chaque démarrage de mysqld. Sous windows, je ne connais pas son nom par défaut my.cnf ou my.conf enfin my.quelquechose

Tu peux y changer toutes les variables système que tu veux. (il y a dans la doc quelque part une section intéressante sur comment augmenter les perfo de MySQL en changant quelques variables)

Tu peux également en changer certaines pour la durée d'une session avec la commande SET (en ligne de commande avec le client mysql)

Infos ici:

http://dev.mysql.com/doc/mysql/fr/dynam ... ables.html
http://dev.mysql.com/doc/mysql/fr/serve ... ables.html
ripat

Mammouth du PHP | 19672 Messages

01 mai 2005, 12:02

Merci Ripat, je vais regarder ça et je te donnerai un retour :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

01 mai 2005, 13:11

Bon, ben j'ai trouvé deux fichier my.ini, mais aucun my.cnf. J'ai fait une recherche avec my.* qui ne m'a sorti que les my.ini et par *.cnf qui n'a strictement rien donné.

Les seules lignes trouvées dans le my.ini en rapport vague sont celles-ci:
# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=latin1
Comme je ne veux pas tout planter, je demande avant : est-ce que je peux les rajouter et avec quelle syntaxe ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Daz
Eléphanteau du PHP | 36 Messages

02 mai 2005, 11:38

Salut,
a part la compilation, on peut effectivement changer des variables de serveur en modifiant le fichier de configuration(my.ini ou my.cnf suivant les configs) comme la montré Cyrano
On peut également modifier certaines variables dynamiquement avec par exemple:
set session collation_server=latin1_bin; (valable que pour un session)

ou dans d'autres cas en remplaçant session par global (valables pour toutes nouvelles connexions) jusqu'au reboot du serveur.

++

Daz
Sakila est mon ami

Mammouth du PHP | 19672 Messages

02 mai 2005, 11:55

Merci Daz, pour ce supplément d'information, malheureusement, je voudrais pouvoir les configurer une fois pour toutes. Sous Linux, la compilation est un mode de vie, mais je suis sous Windows et c'est un autre genre de musique. Or à l'installation de MySQL, je n'ai pas souvenir qu'on m'ait demandé mon avis sur le choix des jeux de caractères.

Peut-être un oubli des développeurs de MySQL AB ?

Tant pis, laissez tomber, je vais me débrouiller autrement en oubliant pas de modifier quand j'enregistre une nouvelle base ou une nouvelle table voire un nouveau champ.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 1380 Messages

05 mai 2005, 21:51

Comme je ne veux pas tout planter, je demande avant : est-ce que je peux les rajouter et avec quelle syntaxe ?
Désolé de ne te revenir que ce soir mais j'ai été off-line (pour la meilleure des causes: quelques jours de repos).

Tu ne risques pas grand chose d'essayer de rajouter les quelques lignes qui t'intéressent. La fichier my.** est lu à chaque démarrage du serveur mysql. Un peu comme le httpd.conf pour Apache. Si le serveur MySQL ne démarre pas (ou mal), tu commentes les lignes ajoutées et tu redémarres.

Ces options seront valables pour toutes les bases de données et tables qui seront ouvertes ou créées.

J'ai trouvé ceci:
http://dev.mysql.com/doc/mysql/fr/option-files.html

Ce fichier est très utile pour augmenter les perfo du serveur. Principalement au niveau de la taille des caches et tampons (query, index et tri). Voici un extrait de mon my.cnf

Code : Tout sélectionner

key_buffer = 256M max_allowed_packet = 1M table_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M myisam_sort_buffer_size = 64M thread_cache = 8 query_cache_size= 16M
Plus de détails sur le "tuning" :
http://dev.mysql.com/doc/mysql/fr/serve ... eters.html

Franchement, ça vaut la peine de modifier ces quelques paramètres clés, surtout si tu travailles avec de grosses tables. Le gain de perfo est appréciable.

Allez, prends ta clé de 12 et au travail!
:wink:
ripat

Mammouth du PHP | 19672 Messages

05 mai 2005, 22:04

Merci Ripat pour les infos, malheureusement, je n'ai pas le loisir de pouvoir les tester, MySQL est en rade, pas moyen de le redémarrer. J'ai laissé un post à ce sujet.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: