2010-12-30 19 views
11

En MySQL puede establecer una variable de sesión llamada time_zone para cambiar la zona horaria. Esto es útil, por ej. cuando mira las marcas de tiempo de otro país. Aquí está un ejemplo:MySQL: configuración de time_zone en my.cnf archivo de opciones

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) 

¿Es posible poner esto en un fichero de opciones, por ejemplo, .my.cnf?

Cuando lo intento, no funciona. Todo lo que consigo es:

mysql: unknown variable 'time_zone=Brazil/East' 
+1

¿Cuál es su sistema operativo? –

Respuesta

16

Cabe

default_time_zone=Brazil/East 

detalles: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_time_zone

Formato Opción-file = default_time_zone

+0

Gracias. Esto funciona. – emx

+0

Obtengo 'mysql: [ERROR] variable desconocida 'default_time_zone = Brazil/East'' al poner esto en mi'/etc/mysql/conf.d/mysql.cnf' en la sección '[mysql]'. Versión 5.7.20. – kev

+0

Poniéndolo bajo '[mysqld]' hace que el servidor no se reinicie y salga con: 'Job for mysql.el servicio falló porque el proceso de control salió con el código de error. Consulte "estado del sistema mysql.service" y "journalctl -xe" para más detalles. – kev

1

No estoy seguro de qué ha cambiado en Xampp, pero esta solución solo funciona si coloca esta línea en el lugar correcto. Créeme, lo intenté muchas veces y tuve que hacer una búsqueda bastante minuciosa para encontrar esta solución.

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

Ejemplo:

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

También, usted querrá estar seguro de que ha poblado su base de datos con los nombres propios de la zona horaria si se va a utilizar "América /Los Angeles". Yo recomendaría usar el desplazamiento. En realidad, recomendaría usar UTC como base y luego convertir tu tiempo desde ese punto para los usuarios según su zona horaria, lo que te ahorrará muchos dolores de cabeza más adelante y mantendrá tu base de datos agradable y uniforme. Echa un vistazo a la guía que he vinculado a continuación, lo explicó muy claramente para mí y utilicé este sistema. Hay muchas formas de codificarlo, pero tomar este enfoque le ahorrará muchos problemas.

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

1

Un poco tarde, pero esto podría ser útil, sin embargo:

Al establecer explícitamente la zona horaria, confirmar que está utilizando el nombre de zona horaria correcta, teniendo en cuenta los muchos han quedado en desuso. Puede usar https://en.wikipedia.org/wiki/List_of_tz_database_time_zones para confirmar.

En mi caso, utilizando MySQL 5.7, el nombre de la zona horaria obsoleto no funcionaba al agregarlo debajo de [mysqld] en mi archivo mysqld.cnf. Usar el nuevo nombre de zona horaria y reiniciar el servicio de mysql funcionó.

Así que para @kev usuario aquí, usando América/Sao_Paulo debe trabajar, en lugar de utilizar Brasil/Este.

Cuestiones relacionadas