web-dev-qa-db-fra.com

MySQL: définition de time_zone dans le fichier d'options my.cnf

Dans MySQL, vous pouvez définir une variable de session appelée time_zone pour modifier le fuseau horaire. Ceci est utile, par exemple. lorsque vous regardez des horodatages d'un autre pays. Voici un exemple:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-12-30 18:59:18 |
+---------------------+
1 row in set (0.00 sec)

mysql> set time_zone='Brazil/East';
Query OK, 0 rows affected (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-12-30 09:59:29 |
+---------------------+
1 row in set (0.00 sec)

Est-il possible de mettre cela dans un fichier d'options, par exemple .mon.cnf?

Quand j'essaye, ça ne marche pas. Tout ce que je reçois c'est:

mysql: unknown variable 'time_zone=Brazil/East'
12
emx

cA devrait etre

default_time_zone=Brazil/East

détails: http://dev.mysql.com/doc/refman/5.5/fr/server-system-variables.html#sysvar_time_zone

Format du fichier d'options = default_time_zone

15
ajreal

Un peu tard, mais cela pourrait être utile néanmoins:

Lorsque vous définissez explicitement le fuseau horaire, confirmez que vous utilisez le nom correct du fuseau horaire, en gardant à l'esprit que plusieurs ont été déconseillés. Vous pouvez utiliser https://en.wikipedia.org/wiki/List_of_tz_database_time_zones pour confirmer.

Dans mon cas, avec MySQL 5.7, le nom du fuseau horaire déconseillé ne fonctionnait pas lors de l'ajout au-dessous de [mysqld] dans mon fichier mysqld.cnf. Utiliser le nouveau nom de fuseau horaire et redémarrer le service mysql a fonctionné.

Donc, pour l'utilisateur @kev ici, utiliser America/Sao_Paulo devrait fonctionner, au lieu d'utiliser Brésil/Est .

0
ronan

Pour MAMP, j'ai ajouté default_time_zone=-03:00 sous [mysqld] dans /Applications/MAMP/conf/my.cnf

J'obtiendrais l'erreur suivante pour Brazil/East, probablement parce qu'elle est déconseillée ( https://en.wikipedia.org/wiki/List_of_tz_database_time_zones ):

[ERROR] Fatal error: Illegal or unknown default time zone 'Brazil/East'

0
AEQ

Dans ~/.my.cnf:

[mysql]
init_command="SET time_zone='Brazil/East'"
0
dolmen

Je ne suis pas certain de ce qui a changé dans Xampp, mais cette solution ne fonctionne que si vous placez cette ligne au bon endroit. Croyez-moi, j'ai essayé plusieurs fois et j'ai dû faire une recherche assez approfondie pour trouver cette solution.

default-time-zone = "+00:00"

Exemple:

read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
default-time-zone = "+00:00" <--- Place here.
log_error = "mysql_error.log"

https://community.apachefriends.org/f/viewtopic.php?f=16&t=47656

En outre, vous voudrez être sûr que votre base de données sera remplie avec les noms de fuseau horaire appropriés si vous allez utiliser "America/Los_Angeles". Je recommanderais d'utiliser l'offset. En fait, je vous recommanderais d'utiliser UTC comme base, puis de convertir votre temps à partir de ce moment pour les utilisateurs en fonction de leur fuseau horaire, ce qui vous évitera de nombreux maux de tête plus tard et maintiendra votre base de données agréable et uniforme. Consultez le guide que j'ai lié ci-dessous, il l'a expliqué très clairement pour moi et j'ai utilisé ce système. Il existe de nombreuses façons de le coder, mais cette approche vous évitera beaucoup de problèmes.

http://www.vertabelo.com/blog/technical-articles/the-proper-way-to-handle-multiple- time-zones-in-mysql

0
Andrew