Melaraskan Zon Waktu MySQL dalam Sambungan Pangkalan Data dengan Java
Penerangan Masalah:
MySQL sedang beroperasi dalam zon waktu "GMT 8", manakala Tomcat menggunakan "GMT". Percanggahan ini membawa kepada ketidakkonsistenan dalam storan dan pengambilan masa tarikh apabila berinteraksi dengan pangkalan data menggunakan Java. Walaupun menetapkan "useTimezone=true" dan "serverTimezone=GMT" dalam URL sambungan, isu ini berterusan.
Penyelesaian:
Untuk menyelesaikan ketidakpadanan zon waktu, perkara berikut pendekatan disyorkan:
Lumpuhkan Masa Tarikh Legasi Kod:
Kemas kini URL sambungan untuk memasukkan "useLegacyDatetimeCode=false". Ini akan mengaktifkan kaedah yang lebih baharu dan lebih tepat untuk mengurus cap masa dalam MySQL.
String url = "jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false";
Gunakan Kalendar Null untuk Cap Masa:
Apabila menetapkan cap masa menggunakan kaedah setTimestamp, pastikan tiada objek Kalendar disediakan sebagai parameter ketiga. Langkah ini akan membenarkan objek tarikh diformat mengikut zon waktu pangkalan data.
getTimestamp(int, Timestamp)
Tentukan Zon Waktu Pelayan (Pilihan):
Jika MySQL menghadapi kekaburan dalam menentukan zon waktu pelayan, mungkin perlu untuk menyatakannya secara eksplisit dalam sambungan URL.
String url = "jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false&serverTimezone=America/New_York";
Dengan melaksanakan langkah-langkah ini, ketidakpadanan zon waktu antara MySQL dan Java boleh dihapuskan, memastikan storan dan pengambilan datetime yang betul dalam pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Kesilapan Zon Waktu MySQL dan Java Apabila `useTimezone=true` Gagal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!