【问题标题】:How can I tell mysql the timezone throught connection string?如何通过连接字符串告诉 mysql 时区?
【发布时间】:2018-08-01 16:15:29
【问题描述】:

由于某种原因,我在尝试启动我的 java 应用程序时遇到此错误。

java.sql.SQLException: 服务器时区值 'AEDT' 是 无法识别或代表多个时区。你必须配置 服务器或 JDBC 驱动程序(通过 serverTimezone 配置 属性)来使用更具体的时区值,如果你想利用 时区支持。

我希望能够更改连接字符串上的时区。到目前为止,我试过这个:

javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/returnit?useLegacyDatetimeCode=false&serverTimezone=UTC"

还有这个:

javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/returnit?useLegacyDatetimeCode=false&serverTimezone=Australia/Sydney"

但是由于某种原因mysql没有选择时区并且仍然抱怨AEDT?

Mysql 连接器版本为 6.0.6 我在 MacOS 中运行的系统 mysql版本是

问题:关于如何通过连接字符串设置 serverTimezone 的任何想法?

非常感谢

【问题讨论】:

  • 这里有一个类似的问题:stackoverflow.com/questions/930900/…
  • @sudip 是的,我想通过连接字符串设置时区。来自您的链接的潜在解决方案,但没有奏效
  • 您想在 mysql 服务器中设置 serverTimezone 属性,而不是将时区作为连接字符串的一部分传递,对吗?解决方案stackoverflow.com/a/19069310/452213 不适合您吗?
  • @sudip 我想告诉mysql连接字符串中的时区。我不喜欢在数据库配置中这样做
  • AEDT 不是时区 ID。我猜你想通过 Australia/Sydney 代替。见this list

标签: mysql timezone


【解决方案1】:

这是一个指定 serverTimezone 的连接字符串示例:

"jdbc:mysql://localhost:3306/returnit?useSSL=false&useUnicode=true&serverTimezone=UTC"

【讨论】:

  • 我们的项目名称不是“returnit”吗?它对我不起作用,我的网址是“jdbc:mysql://localhost:3306/PhoneCompany”
  • 删除“amp”和“;”字符并将名称更改为您的数据库名称:jdbc:mysql://localhost:3306/YOUR_DB?useSSL=false&useUnicode=true&serverTimezone=UTC
猜你喜欢
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 2016-09-26
  • 2014-03-31
  • 2014-08-08
  • 1970-01-01
  • 2013-12-14
  • 1970-01-01
相关资源
最近更新 更多