Odoo和其他SprinBoot框架同時存在時時區問題

Kwoky發表於2024-11-29

因為Centos的停更以及Odoo版本升級後更加友好的支援了Ubuntu所以釋出Odoo服務使用了Ubuntun系統環境,因為Odoo為國外人開發所以他們預設程式碼中處理了跨時區的問題,便於在國內可以友好顯示,但是我還不能手動去調時區,要不然就的處理Odoo的原始碼了,可是我還有另一個MySQL的新環境要釋出上來,釋出後發現MySQL的時間儲存以及頁面顯示出現了時區的差異,以下就是基於以上兩點的最簡單的解決辦法!

檢視MySQL的預設時區
SELECT @@global.time_zone, @@session.time_zone;

正常會顯示預設時區UTC

修改MySQL的時區(永久)
  • 修改MySQL的配置檔案(my.cnf)
[mysqld]
default-time-zone = 'Asia/Shanghai'
  • 新增以上內容後重啟MySQL服務
    如果啟動失敗不出意外應該是MYSQL沒有掛載系統整合的所有時區的配置檔案導致的使用如下方法
  • 指定時區所在檔案
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

會提示輸入密碼,輸入MySQL的密碼即可

  • 重啟服務後驗證時區
SELECT @@global.time_zone, @@session.time_zone;

image

  • 結果顯示如上資訊代表修改時區完成
  • 修改JDBC連線
jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
  • 指定時區 serverTimezone=Asia/Shanghai
透過以上方式正常情況下MySQL資料庫的儲存以及前端頁面的顯示應該就已經正常了

相關文章