MySQL8.0 connector JAR包的下載位置及JDBC配置


MySQL8.0 connector JAR包的下載位置及JDBC配置

下載地址在https://dev.mysql.com/downloads/connector/j/

需要選擇操作系統(Select Operating System)

Mysql 8.0 的JDBC配置有所變化

Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3?serverTimezone=UTC", "root", "密碼");
String sql = "insert into student values("zhangsan", 1356897824)";
Statement stmt = conn.createStatement();
int count = stmt.executeUpdate(sql);
System.out.println(count);
stmt.close();
conn.close();

變化主要在兩點, 分別是Class.forName("com.mysql.cj.jdbc.Driver"), 以及獲得連接的URL配置DriverManager.getConnection("jdbc:mysql://localhost:3306/db3? serverTimezone=UTC", "root", "密碼");

"jdbc:mysql://localhost:3306/db3?serverTimezone=UTC" 這句話必須設置, 但是設置UTC時間(世界統一時間), 會比北京時間早8個小時, 也就是說,北京2020年3月20日18點的時候,UTC時間為2020年3月20日10點.

以下內容轉自https://blog.csdn.net/baidu_38837718/article/details/104981617

如果你用編譯器連接數據庫,定義了serverTimezone=UTC,那么在你編譯器上執行的SQL語句,會先以UTC時區進行存儲,發送到MySQL,然后MySQL以本地時區進行轉換,就會導致,執行時間比從編譯器上的執行時間早8個小時,導致,同一段SQL語句,在mysql直接執行,與編譯器執行,結果不同,因為時間相差8個小時

serverTimezone=UTC
統計3月13日到3月19日的數據,Navicat運行右下角顯示有21條記錄

原因如下:
編譯器上設置的時區屬性會UTC,雖然傳往后台的時間是2020-03-13 03:17:33.408(Timestamp), 2020-03-19 03:17:33.408(Timestamp),但是在沒到達后台之前,進行了一次存儲,以UTC時區進行存儲,也就是2020-03-12 19:17:33.408(Timestamp), 2020-03-18 19:17:33.408(Timestamp),然后到達后台后,取出,進行查詢的時間段,就早了8個小時,也就只有18條記錄

解決方式
將屬性設置為
serverTimezone=Asia/Shanghai


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM