簡體   English   中英

在JDBC連接上設置時區

[英]Setting a time zone on a JDBC connection

我在時區為:的Linux機器上運行一些Java:

% timedatectl
...
America/Los_Angeles (PDT, -700)

MySQLDatabase.getConnection()期間出現錯誤:

java.sql.SQLException: The server time zone value 'PDT' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specific time zone value if you want to utilize time zone support.

我無法更改服務器時區,因此我想告訴JDBC。 查閱這里的文檔它給了我三個選擇,而我嘗試應用它們卻迷失了。

選項1:我正在MysqlDataSource上尋找setServerTimezone方法,但沒有找到。

選項2:我似乎都不在調用這些方法中的任何一個。

選項3:我也沒有連接URL,因為我以MysqlDataSource開頭,設置了用戶名等並從那里獲取Connection

我該怎么做呢?

我還沒有想出原始問題的答案,但是我想出了另一種解決方法:

  • “服務器”(Mariadb / MySQL)上的默認時區是指數據庫守護程序,而不是服務器框。 (在文檔中含糊不清)
  • 您可以為數據庫守護程序設置默認時區。 如果沒有設置(這是我的情況),它將從服務器操作系統中獲取。
  • 要將守護程序的默認時區設置為UTC,請編輯/etc/mysql/my.conf (或等效選項),並將default_time_zone = +0:00添加到[mysqld]部分。
  • 除非您在mysql數據庫中填充了與時區相關的表(它們始終存在,但默認情況下為空),否則需要使用偏移量而不是命名時區。

PS:前Sun / Oracle中有一些了解API設計的人。 伙計們,如果您讀了這篇文章,該如何辦一些內部課程來教那些還不懂的人呢? 而且,親愛的文檔Y.getX() ,如果您在文檔中寫道XY一個屬性,請確定Y.getX()存在嗎?

在我的Rasperry Pi上,我只需要更改Rasperian的時區。

希望能奏效,菲利普

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM