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

Spring Boot集成ShedLock报PostgreSQL错误relation "shedlock"不存在如何解决

ShedLock表不存在错误解决步骤

1. 检查依赖完整性

首先确认项目中引入了两个必须的ShedLock依赖:

  • Spring集成核心包:shedlock-spring
  • JDBC适配包:shedlock-provider-jdbc-template

2. 手动创建shedlock锁表

ShedLock默认不会自动生成锁表,需要你手动在对应PostgreSQL数据库中执行建表语句:

CREATE TABLE IF NOT EXISTS shedlock (
    name VARCHAR(64) NOT NULL,
    lock_until TIMESTAMP NOT NULL,
    locked_at TIMESTAMP NOT NULL,
    locked_by VARCHAR(255) NOT NULL,
    PRIMARY KEY (name)
);

注意:执行建表语句时,必须切换到你JDBC URL中配置的schemeName对应的schema下执行,不要默认建到public schema中,否则会出现表找不到的问题。

3. 显式指定锁表的schema路径

如果建表后仍报错,可以在LockProvider配置中明确指定锁表的全路径,修改配置如下:

@Bean
public LockProvider lockProvider(DataSource dataSource) {
    return new JdbcTemplateLockProvider(
            JdbcTemplateLockProvider.Configuration.builder()
                    .withJdbcTemplate(new JdbcTemplate(dataSource))
                    .withTableName("schemeName.shedlock") // 替换为实际的schema名+表名
                    .usingDbTime() 
                    .build()
    );
}

4. 可选:开发环境开启自动建表

开发环境可以开启自动建表配置,省略手动建表步骤,在application.properties中添加如下配置即可:

spring.shedlock.jdbc.auto-create-schema=true

注意:生产环境建议关闭该配置,避免权限不足导致的启动异常。

额外排查点

  • 确认配置的数据库账号拥有schemeName schema的读写权限,避免表存在但无权限访问的问题。

内容的提问来源于stack exchange,提问作者İlkay Gunel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:15:03