6 Şubat 2022 Pazar

system_time_zone Değişkeni - İşletim Sisteminin Zaman Dilimini Değiştirmeye Gerek Kalmaz

Giriş
Açıklaması şöyle
Instead of changing the OS time zone so it is loaded at MySQL start time (which in turn initializes @@system_time_zone), it is possible to set MySQL @@system_time_zone by either:

- Setting TZ environment variable
- Restarting the server using –timezone with mysqld_safe
Eğer bu değişkene değer atanmamışsa NOW() ve UTC_TIMESTAMP() arasında fark yoktur. MySQL sistem saatini UTC kabul eder.

Örnek
Şöyle yaparız
$ export TZ=EST

# Server restart

mysql> SELECT @@system_time_zone, @@time_zone;
+--------------------+-------------+
| @@system_time_zone | @@time_zone |
+--------------------+-------------+
| EST                | SYSTEM      |
+--------------------+-------------+
1 row in set (0.00 sec)

Örnek
Bu değişkene değer atamak için docker compose dosyasında şöyle yaparız. Burada TZ değerine değer atanıyor
version: '3.1'
services:
  db:
    image: mysql:8.0.27
    container_name : mysql-8
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: advuser
      MYSQL_PASS: advuser
      MYSQL_DATABASE: adv
      TZ: Europe/Istanbul
    volumes:
      - D:/mysqlvolume:/var/lib/mysql
    ports:
      - "3307:3306"
system_time_zone değişkenini SYSTEM yani işletim sistemi değeri olarak kullandığımız için 
> SELECT @@global.time_zone, @@session.time_zone

@@global.time_zone	@@session.time_zone
SYSTEM			SYSTEM
Bu sefer farklı çıktı alırız
> SELECT  NOW(), UTC_TIMESTAMP()

NOW()				UTC_TIMESTAMP()
Feb 7, 2022, 10:40:47 AM	Feb 7, 2022, 7:40:47 AM

Hiç yorum yok:

Yorum Gönder

Soft Delete

Giriş Açıklaması  şöyle When using the soft delete mechanism on the database, you might run into a situation where a record with a unique co...