【问题标题】:Spring-boot vs Postgres vs Cockroach -> The fastpath function lo_creat is unknownSpring-boot vs Postgres vs Cockroach -> 快速路径函数 lo_creat 未知
【发布时间】:2020-10-01 08:33:45
【问题描述】:

在我的 Spring-boot 应用程序中将 Postgres 更改为 Cockroach 后,我开始遇到这个问题:

The fastpath function lo_creat is unknown.

然后记录:

org.postgresql.util.PSQLException: The fastpath function lo_creat is unknown.
    at org.postgresql.fastpath.Fastpath.getID(Fastpath.java:297) ~[postgresql-42.2.14.jar!/:42.2.14]
    at org.postgresql.fastpath.Fastpath.fastpath(Fastpath.java:146) ~[postgresql-42.2.14.jar!/:42.2.14]
    at org.postgresql.fastpath.Fastpath.getInteger(Fastpath.java:158) ~[postgresql-42.2.14.jar!/:42.2.14]
    at org.postgresql.fastpath.Fastpath.getOID(Fastpath.java:209) ~[postgresql-42.2.14.jar!/:42.2.14]
    at org.postgresql.largeobject.LargeObjectManager.createLO(LargeObjectManager.java:295) ~[postgresql-42.2.14.jar!/:42.2.14]
    at org.postgresql.largeobject.LargeObjectManager.createLO(LargeObjectManager.java:278) ~[postgresql-42.2.14.jar!/:42.2.14]
    at org.postgresql.jdbc.PgPreparedStatement.setClob(PgPreparedStatement.java:1215) ~[postgresql-42.2.14.jar!/:42.2.14]
    at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.setClob(HikariProxyPreparedStatement.java) ~[HikariCP-3.4.5.jar!/:na]

  

在 spring-boot 中有一个简单的解决方法吗?因为它似乎不适用于蟑螂。

似乎与hibernate和DB文本字段有关。

【问题讨论】:

  • 一般来说,不建议一开始就在 Postgres 中使用“大对象”。使用 byteaPreparedStatement.setBytes() 是更好的选择
  • 使用模式注册应用程序......我没有机会改变:(

标签: postgresql spring-boot cockroachdb


【解决方案1】:

Spring Boot 应该让您配置 DB 方言。您可以尝试设置以下内容吗:

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.CockroachDB201Dialect

CockroachDB 方言应避免使用这些 LOB 函数。

【讨论】:

    【解决方案2】:

    您相信 CockroachDB 与 PostgreSQL 兼容的说法。

    但似乎它们的兼容性并没有扩展到大对象,所以你不应该调用org.postgresql.largeobject.LargeObjectManager

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 2014-04-07
      • 2021-07-17
      • 2016-05-07
      • 2012-09-14
      相关资源
      最近更新 更多