MySQL Zaman Dilimi (Timezone) Ayarı

By samed, 3 August, 2013

Zaman dilimi ayarlamaları doğru bir şekilde yapılmadığında MySQL'in DATE(),CURRENT_TIMESTAMP, NOW() gibi fonksiyonları düzgün bir şekilde çalışmayabilir. Zamanlama üzerinde herhangi bir hata oluşmaması için sistemin ve veri tabanının zaman ayarları doğru şekilde yapılmalıdır. İstanbul için zaman dilimi ayarı MySQL'de aşağıdaki gibidir.

mysql> SET GLOBAL time_zone = 'Europe/Istanbul';
mysql> SET time_zone = 'Europe/Istanbul';

Burada zaman dilimi ayaması yaparken aslında siz aslında MySQL'e /usr/share/zoneinfo altındaki ilgili dosyanın göreceli adresini veriyorsunuz. Türkiye için geçerli ayar dosyası /usr/share/zoneinfo/Europe/Istanbul yolunda yer alıyor. Bu durumda zaman dilimi olarak MySQL'e Europe/Istanbul vermeniz gerekiyor.

ERROR 1298 (HY000): Unknown or incorrect time zone: 'Europe/Istanbul
Zaman dilimi ayarlaması yaparken böyle bir hata ile karşılaşmanız kuvvetle muhtemeldir. Bu hata MySQL içerisine zaman dilimi bilgileri aktarılmadığı için ortaya çıkmaktadır. Bu hatayı gidermek için terminalden aşağıdaki komuyu uygulamanız yeterlidir.

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Bu konu çalıştırdığınızda sizden MySQL sunucunuzdaki root kullanıcısının şifresini isteyecektir. Eğer ki root kullanıcısına herhangi bir şifre atamadıysanız komutta yer alan -p parametresini kaldırınız.