2010-12-30 24 views
11

Trong MySQL bạn có thể đặt một biến phiên gọi TIME_ZONE để thay đổi múi giờ. Điều này hữu ích, ví dụ: khi nhìn vào dấu thời gian từ một quốc gia khác. Dưới đây là ví dụ:MySQL: thiết TIME_ZONE trong các tùy chọn my.cnf nộp

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) 

Có thể đặt điều đó trong tệp tùy chọn, ví dụ: .my.cnf?

Khi tôi cố gắng, nó không hoạt động. Tất cả tôi nhận được là:

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

hệ điều hành của bạn là gì? –

Trả lời

16

nó phải được

default_time_zone=Brazil/East 

chi tiết: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_time_zone

Format Option-File = default_time_zone

+0

Cảm ơn. Những công việc này. – emx

+0

Tôi nhận được 'mysql: [ERROR] biến không xác định 'default_time_zone = Brazil/East'' khi đặt giá trị này trong'/etc/mysql/conf.d/mysql.cnf' của tôi trong phần '[mysql]'. Phiên bản 5.7.20. – kev

+0

Đặt nó trong kết quả '[mysqld]' trong máy chủ không khởi động lại và thoát với: 'Job for mysql.dịch vụ không thành công vì quá trình kiểm soát đã thoát với mã lỗi. Xem "trạng thái systemctl mysql.service" và "journalctl -xe" để biết chi tiết.'. – kev

1

Tôi không chắc chắn những gì đã thay đổi trong xampp, nhưng giải pháp này chỉ hoạt động nếu bạn đặt dòng này ở nơi thích hợp. Tôi tin tưởng tôi đã thử nhiều lần và phải tìm kiếm kỹ lưỡng để tìm ra giải pháp này.

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

Ví dụ:

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

Ngoài ra, bạn sẽ muốn chắc chắn rằng bạn đã sở dữ liệu của bạn cư với tên múi giờ thích hợp nếu bạn đang đi để sử dụng "Mỹ/Los_Angeles ". Tôi khuyên bạn nên sử dụng bù đắp. Tôi thực sự muốn khuyên bạn nên sử dụng tính theo giờ UTC như cơ sở của bạn sau đó chuyển đổi thời gian của bạn từ thời điểm đó cho người dùng dựa trên múi giờ của họ mà bạn sẽ tiết kiệm được rất nhiều đau đầu sau đó và giữ đẹp cơ sở dữ liệu của bạn và thống nhất. Kiểm tra các hướng dẫn tôi liên kết dưới đây nó giải thích nó rất rõ ràng cho tôi và tôi sử dụng hệ thống này. Có rất nhiều cách để mã hóa nó nhưng việc tiếp cận này sẽ giúp bạn tiết kiệm rất nhiều vấn đề.

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

1

Một hơi muộn, nhưng điều này có thể hữu ích tuy nhiên:

Khi thiết lập một cách rõ ràng lại múi giờ cũng xác nhận rằng bạn đang sử dụng tên múi giờ đúng, giữ trong tâm trí nhiều người đã bị phản đối. Bạn có thể sử dụng https://en.wikipedia.org/wiki/List_of_tz_database_time_zones để xác nhận.

Trong trường hợp của tôi, sử dụng MySQL 5.7, tên múi giờ bị phản đối đã không làm việc khi thêm nó bên dưới [mysqld] trong tệp mysqld.cnf tôi. Sử dụng tên múi giờ mới và khởi động lại dịch vụ mysql, đã hoạt động.

Vì vậy, đối với người dùng @kev tại đây, sử dụng America/Sao_Paulo sẽ hoạt động, thay vì sử dụng Brazil/Đông.

Các vấn đề liên quan