Problèmes avec les jeux de caractères
<<<
Support des fuseaux horaires avec MySQL Administration du serveur
>>>

5.8 Localisation MySQL et utilisation internationale
5 Administration du serveur
 Manuel de Référence MySQL 4.1 : Version Française

Le jeu de caractères utilisé pour les données et le stockage
Langue des messages d'erreurs
Ajouter un nouveau jeu de caractères
Le tableau de définition des caractères
Support d'assemblage des chaînes
Support des caractères multi-octets
Problèmes avec les jeux de caractères
->Support des fuseaux horaires avec MySQL

5.8.8 Support des fuseaux horaires avec MySQL

Avant MySQL version 4.1.3, vous pouviez modifier le fuseau horaire du serveur avec l'option --timezone=timezone_name de 'mysqld_safe' . Vous pouvez aussi le modifier avec la variable d'environnement TZ avant de lancer 'mysqld' .

Les valeurs autorisées pour --timezone et TZ dépendent du système d'exploitation. Consultez la documentation de votre système d'exploitation pour connaître ces valeurs.

Depuis MySQL 4.1.3, le serveur entretien différentes configurations de fuseau horaire :
  • Le fuseau horaire du système. Lorsque le serveur se lance, il tente de déterminer le fuseau horaire de la machine serveur, et l'utilise dans la variable système system_time_zone .
  • Le fuseau horaire courant. La variable système globale time_zone indique le fuseau horaire courant du serveur. La valeur initiale est 'SYSTEM' , qui indique que le serveur est dans le même fuseau horaire que le serveur. La valeur initiale peut être spécifiée explicitement avec l'option '--default-time-zone=timezone' . Si vous avez les droits de SUPER , vous pouvez modifier la valeur de cette variable durant l'exécution du serveur, avec cette commande :
    
    mysql> SET GLOBAL time_zone = timezone;
    
  • Fuseau horaire de connexion. Chaque client qui se connecte peut disposer de sa propre configuration de fuseau horaire, grâce à la variable de session time_zone . Initialement, elle prend la valeur de time_zone mais peut être redéfinie avec la commande suivante :
    
    mysql> SET time_zone = timezone;
    

La valeur courante du fuseau horaire global et de session est accessible avec cette commande :


mysql> SELECT @@global.time_zone, @@session.time_zone;
Les valeurs de timezone peuvent être fournies sous forme de chaînes de caractères, indiquant un décalage par rapport au temps UTC, comme '+10:00' ou '-6:00' . Si la table de fuseau horaire de la base mysql a été créée et remplie, vous pouvez aussi utiliser les noms de fuseaux, comme 'Europe/Paris' ou 'Canada/Eastern' , ou 'MET' . La valeur 'SYSTEM' indique le fuseau horaire du système. Les noms de fuseau horaire sont insensibles à la casse.

La procédure d'installation de MySQL crée la table des fuseaux horaires, mais ne la remplit pas. Vous devez le faire manuellement. Si vous passez en MySQL version 4.1.3 ou plus récent depuis une version plus récente, il est important de créer ces tables en mettant à jour la base mysql . Utilsiez les instructions de Mise à jour des tables de droits .)

Note : actuellement, la table des fuseaux horaires peut être remplie uniquement sous Unix. Le problème sera bientôt réglé pour Windows.

Le programme 'mysql_tzinfo_to_sql' sert à charger la table des fuseaux horaires. Vous devez connaître le nom du dossier dans lequel votre système d'exploitation enregistre les fuseaux horaires. Typiquement, c'est /usr/share/zoneinfo . Indiquez cette valeur au programme en ligne de commande 'mysql_tzinfo_to_sql' , et passez le résultat du programme au client 'mysql' . Par exemple :


shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
'mysql_tzinfo_to_sql' lit les fichiers de fuseau horaire de votre système et génère des requêtes SQL. Le client 'mysql' traite ces commandes et les charge dans la base de données.

'mysql_tzinfo_to_sql' peut aussi charger un fichier de fuseau horaire, et générer les secondes additionnelles.

Pour charger un fichier de fuseaux horaires tz_file qui correspond au fuseau appelé tz_name , appelez le programme 'mysql_tzinfo_to_sql' comme ceci :

shell> mysql_tzinfo_to_sql tz_file tz_name | mysql -u root mysql
SI votre système doit prendre en compre les secondes additionnelles, initialisez les informations de secondes additionnelles comme ceci, où tz_file est le nom de votre fichier de fuseau :

shell> mysql_tzinfo_to_sql --leap tz_file | mysql -u root mysql

<< Support des fuseaux horaires avec MySQL >>
Problèmes avec les jeux de caractères Localisation MySQL et utilisation internationale Administration du serveur