【问题标题】:Cockroach Db with Spring Boot带有 Spring Boot 的 Cockroach Db
【发布时间】:2020-08-22 01:09:55
【问题描述】:

在将 Coacroach Db 与 Spring Boot 和 Spring Batch 一起使用时,我收到以下错误。

org.postgresql.util.PSQLException: ERROR: invalid value for parameter "TimeZone": "Europe/London"

详情:系统找不到指定的路径。

Application.properties

spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL95Dialect
spring.datasource.username=root
spring.datasource.password=
spring.datasource.type=com.zaxxer.hikari.HikariDataSource

spring.datasource.url=jdbc:postgresql://localhost:26257/defaultdb?sslmode=disable&serverTimezone=UTC&useLegacyDatetimeCode=false

spring.jpa.properties.hibernate.jdbc.time_zone= UTC

spring.batch.initialize-schema = always

我还添加了这个和上面提到的属性,但没有帮助。

@PostConstruct
void started() {
  TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}

【问题讨论】:

    标签: spring spring-boot spring-data-jpa spring-batch cockroachdb


    【解决方案1】:

    所以看看一些问题。

    1.  You said you are using Coacroach Db but you seem to be loading a JDBC JAR and ULR string for Postgres.  
    
    2.  Posgres does not have "Europe/London" as a valid TimeZone String.  There is a "Europe/London GB GB-Eire" 
    See: https://www.postgresql.org/docs/8.1/datetime-keywords.html
    
    3.  You have a space in the time zone property name.
        This:       spring.jpa.properties.hibernate.jdbc.time_zone= UTC
        Should Be:  spring.jpa.properties.hibernate.jdbc.time_zone=UTC
    

    【讨论】:

    • 1) 正确的 URL 应该是什么? 2)我还没有设置欧洲/伦敦时区,不确定它会在哪里。 3 ) 空间没有解决问题。
    • 好吧,数据库 URL 应该只有您知道,但如果它是您所说的 CoacroachDB,那么 URL 中不应包含 Posgres。 “jdbc:postgresql://localhost”,不应使用 Postgres 驱动程序“org.postgresql.Driver”
    • 蟑螂db没有驱动
    • 根本没有JDBC驱动?那么你永远无法在 Java 中使用它,所以我怀疑情况是否如此。无论哪种方式,知道使用错误的方法都不会奏效。
    • @BrianC CockroachDB 与 Postgres 有线兼容。 @ChandreshMishra 使用 PGJDBC 驱动程序和带有 postgresql 前缀的 URL 是正确的。我们在这里有一个教程来开始使用 CockroachDB 和 Spring Boot。 (免责声明:我在 CockroachDB 工作。)cockroachlabs.com/blog/tutorial-spring-hibernate
    【解决方案2】:

    出于好奇,您使用的是哪个操作系统?我们有一个open issue relating to timezones,已知它会影响 Windows。

    当您指定 UTC 时区时,您是否收到与“欧洲/伦敦”相同的错误?如果您尝试使用数字偏移量,例如“+0:00”会怎样?

    另外,通过 URL 设置时区时,参数应为timezone=utc(或您想要的任何其他值)。

    【讨论】:

    • 是的,我使用的是 windows 机器。如何通过 URL 设置?
    • 尝试使用这个 URL:jdbc:postgresql://localhost:26257/defaultdb?sslmode=disable&timezone=UTC
    猜你喜欢
    • 2020-09-16
    • 2021-05-07
    • 2020-06-09
    • 1970-01-01
    • 2023-03-20
    • 2019-09-10
    • 2016-11-12
    • 2016-04-02
    • 2017-10-07
    相关资源
    最近更新 更多