Aplikasi web Java yang menggunakan pemacu JDBC 5.1.23 tidak mengalami sebarang masalah semasa menyambung ke pangkalan data MySQL 5.5. Walau bagaimanapun, selepas menaik taraf kepada pemacu versi 5.1.33, Tomcat mula menghadapi pengecualian semasa aplikasi dimulakan. Mesej ralat mendorong penyiasatan tentang sebab ralat sedemikian berlaku.
Ralat yang dihadapi ialah:
WARNING: Unexpected exception resolving reference java.sql.SQLException: The server timezone value 'UTC' is unrecognized or represents more than one timezone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc timezone value if you want to utilize timezone support.
Untuk membetulkan isu ini, telah ditentukan bahawa pemacu MySQL JDBC 5.1.33 memerlukan eksplisit spesifikasi parameter zon waktu pelayan dalam rentetan sambungan untuk sokongan zon waktu UTC. Ini dicapai dengan menambah yang berikut pada rentetan sambungan:
?serverTimezone=UTC
Tambahan ini memastikan bahawa pemandu menggunakan zon waktu yang ditentukan untuk operasi sementara, menyelesaikan pengecualian dan membolehkan aplikasi berfungsi dengan betul. Oleh itu, rentetan sambungan yang diubah suai muncul seperti berikut:
jdbc:mysql://localhost/db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
Atas ialah kandungan terperinci Mengapa Pemacu MySQL JDBC 5.1.33 Melemparkan SQLException Berkenaan Zon Waktu Pelayan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!