Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan Konflik Zon Waktu MySQL dan Java dalam Sambungan Pangkalan Data?

Bagaimana untuk Menyelesaikan Konflik Zon Waktu MySQL dan Java dalam Sambungan Pangkalan Data?

Barbara Streisand
Lepaskan: 2024-11-27 14:20:12
asal
163 orang telah melayarinya

How to Resolve MySQL and Java Time Zone Conflicts in Database Connections?

Menyelesaikan Percanggahan Zon Waktu MySQL dalam Sambungan Pangkalan Data Java

Dalam senario tertentu, zon waktu pangkalan data MySQL dan zon waktu pelayan Java boleh mengakibatkan ketidakkonsistenan apabila bekerja dengan nilai datetime. Artikel ini menangani isu ini dan menyediakan penyelesaian komprehensif menggunakan penyambung MySQL JDBC.

Isu ini berpunca daripada tingkah laku lalai MySQL menggunakan zon waktu "GMT 8" manakala Tomcat beroperasi pada "GMT". Percanggahan ini membawa kepada nilai datetime yang salah disimpan dalam pangkalan data dan diambil dalam Java.

Untuk membetulkannya, URL sambungan mesti diubah suai untuk memasukkan parameter berikut:

  • useTimezone=true: Mendayakan sokongan untuk zon waktu dalam sambungan.
  • serverTimezone=GMT: Menentukan zon waktu untuk pelayan pangkalan data.

Walau bagaimanapun, pendekatan ini telah digantikan oleh penyelesaian yang lebih mantap yang melibatkan penggunaan useLegacyDatetimeCode=false. Parameter ini melumpuhkan kod pengendalian masa tarikh lama dan mendayakan mekanisme pengendalian cap masa baharu dalam penyambung MySQL JDBC.

Dengan menetapkan useLegacyDatetimeCode=false, kod Java boleh menentukan objek Kalendar semasa menetapkan cap masa . Objek Kalendar ini mestilah batal, kerana kehadirannya akan menyebabkan nilai datetime diformatkan berdasarkan zon waktu pelayan web, memperkenalkan kekeliruan.

Untuk mendapatkan semula nilai datetime dengan betul, getTimestamp(int) kaedah harus digunakan tanpa menyatakan objek Kalendar. Ini memastikan zon waktu pangkalan data digunakan secara eksklusif untuk pemformatan.

Adalah penting untuk ambil perhatian bahawa zon waktu pelayan web menjadi tidak relevan dengan pendekatan ini. Selain itu, jika MySQL mengadu tentang zon waktu pelayan yang samar-samar (cth., EST), ia boleh dinyatakan secara eksplisit dalam URL sambungan menggunakan serverTimezone=.

Penyelesaian ini mempunyai ketara mempertingkatkan ketepatan pengendalian datetime apabila antara muka dengan pangkalan data MySQL daripada aplikasi Java.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Konflik Zon Waktu MySQL dan Java dalam Sambungan Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan