java—在jdbc连接上设置时区

o7jaxewo  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(1170)

我在一个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。参考这里的文档,它给了我三个选项,我无法尝试应用它们。
选择一:我在找一个 setServerTimezone 上的方法 MysqlDataSource 一个也找不到。
选项2:我似乎没有调用这两种方法中的任何一种。
选项3:我也没有连接url,因为我从 MysqlDataSource ,设置用户名等并获取 Connection 从那里开始。
我该怎么做?

62lalag4

62lalag41#

我还没有找到最初问题的答案,但我找到了另一种解决方法:
“服务器”(mariadb/mysql)上的默认时区是指数据库守护进程,而不是服务器框(在文件中是模棱两可的)
可以为数据库守护程序设置默认时区。如果没有设置(这是我的情况),则从服务器操作系统获取。
要将守护程序的默认时区设置为utc,请编辑 /etc/mysql/my.conf (或同等)并添加 default_time_zone = +0:00[mysqld] 部分。
您需要使用偏移量,而不是指定的时区,除非在中有与时区相关的表 mysql 数据库已填充(它们始终存在,但默认为空)。
p、 在美国,exsun/oracle有一些人了解api设计。你们这些家伙呢,如果你们读到这篇文章,就开一些内部课程来教那些还不懂的人?亲爱的朋友们,如果你写的话 X 是的财产 Y 在你的文件里,你能确定吗 Y.getX() 有吗?

ocebsuys

ocebsuys2#

在我的拉斯佩里圆周率上,我不得不改变拉斯佩里的时区。
希望能成功,菲利普

相关问题