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:
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!