Comment définir correctement mysql fuseau horaire
J'ai un problème bizarre concernant mysql fuseau horaire.
Dans mon site fichier de config, j'ai cette ligne qui définit le fuseau horaire :
mysql_query("SET SESSION time_zone = '$offset';"); //Offset is properly calculated, no worries about that
Le plus drôle, c'est que si j'ajoute une autre ligne droite après cela, comme ceci :
$q = mysql_query("SELECT NOW() as now");
$row = mysql_fetch_array($row);
echo $row["now"];
Après l'exécution de ce code, l'heure est affichée correctement.
MAIS, dans certains autres questions que je insérer des lignes dans les tables qui ont une colonne nommée date par défaut CURRENT_TIMESTAMP.
De l'insertion de lignes comme ceci:
INSERT INTO `sessions` (`user_id`) VALUES `1`
(La table des sessions a un date
colonne par défaut CURRENT_TIMESTAMP)
Mais la valeur insérée dans la bd encore des points pour le fuseau horaire du serveur :((
Toute idées sur la façon de travailler par le biais de ce ?
SET SESSION time_zone
truc?êtes-vous de la fermeture de la connexion avant de lancer le
INSERT
?Je suis le vérifier sur phpMyAdmin, et non, la connexion n'est pas fermée jusqu'à la fin de l'exécution du script
aucune idée de si phpMyAdmin peut-être une conversion en arrière lors de l'affichage ?
OriginalL'auteur Dany Khalife | 2011-12-08
Vous devez vous connecter pour publier un commentaire.
Vous devez comprendre que MySQL conserve plusieurs paramètres de fuseau horaire:
Voir http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html pour plus de détails.
Date/heure, les valeurs sont stockées dans deux différentes façons:
De ce qui précède, il devrait être clair que les valeurs que vous voyez lorsque vous lisez le timestamp unix, les colonnes ne sont pas nécessairement ce qui est réellement stocké dans la base de données. Ils sont convertis en utilisant le fuseau horaire du serveur et le client de fuseau horaire. Le résultat peut être source de confusion si vous ne comprenez pas les détails de la mécanique.
Pour un premier essai essayer de trouver les paramètres actuels dans chacun de vos programmes client par l'exécution de
Le fuseau horaire global sera toujours le même. Mais la séance de fuseau horaire peut varier d'application de client à client de l'application et modifier les résultats de votre lecture et en écriture.
Merci pour les commentaires sur ce, je pensais que j'allais devenir fou.
Belle réponse..j'ai de la requête comment définissez-vous Client de fuseau horaire dans mysql confiq fichier ???
Le client de fuseau horaire ne peut pas être défini dans le fichier config. Il est déterminé par session. Voir MySQL docs:
Per-connection time zones. Each client that connects has its own time zone setting, given by the session time_zone variable. Initially, the session variable takes its value from the global time_zone variable, but the client can change its own time zone with this statement: mysql> SET time_zone = timezone;
OriginalL'auteur Jpsy