You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot连接RedShift报错:relation 'information_schema.sequences'不存在

解决Spring Boot连接RedShift时的「relation information_schema.sequences does not exist」错误

咱们先拆解下问题根源:Redshift虽然基于PostgreSQL开发,但它移除了PostgreSQL的**序列(Sequence)**功能。而你当前配置的org.hibernate.dialect.PostgreSQL9Dialect会让Hibernate自动尝试访问information_schema.sequences表来处理主键生成逻辑,这张表在Redshift里是不存在的,所以触发了这个报错。另外你的主键生成策略也需要适配Redshift的特性。

下面是具体的解决步骤:

1. 替换为Redshift专用的Hibernate方言

把原来的PostgreSQL方言换成Redshift对应的方言,让Hibernate用Redshift兼容的逻辑处理数据库操作:

# 替换原有的PostgreSQL方言配置
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.RedshiftDialect

如果你的Hibernate版本较低,没有内置RedshiftDialect,可以使用亚马逊官方提供的方言类com.amazon.redshift.hibernate.dialect.RedshiftDialect(需要确保依赖包含相关类,或者升级Hibernate版本)。

2. 调整主键生成策略适配Redshift

Redshift推荐使用IDENTITY自增列作为主键,所以修改你的POJO主键注解:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // 替换原有的GenerationType.TABLE
private long id;

同时要确保Redshift数据库中some_data_table的id列是定义为自增列的,比如:

CREATE TABLE some_data_table (
    id BIGINT IDENTITY(1,1) PRIMARY KEY,
    -- 其他列定义...
);

如果你的主键是业务生成的(比如UUID或自定义ID),也可以直接去掉@GeneratedValue,手动赋值主键。

3. 验证依赖与其他配置

  • 你当前使用的Redshift JDBC驱动版本1.2.10.1009是稳定版本,无需调整,但要确保和Hibernate版本兼容;
  • 现有的validationQuery = SELECT 1、hibernate.jdbc.lob.non_contextual_creation = true等配置都是Redshift兼容的,可以保留。

完成以上调整后,重启Spring Boot应用,应该就能正常连接Redshift并通过Hibernate的DDL校验了。

内容的提问来源于stack exchange,提问作者GD_Java

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:43:54