繁体   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