Spring-boot vs Postgres vs Cockroach -> 快速路径函数 lo_creat 未知

Spring-boot vs Postgres vs Cockroach -> The fastpath function lo_creat is unknown

在我的 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文本字段有关。

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

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

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

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

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