首页 > 解决方案 > Spring Boot ShedLock“关系“shedlock”不存在”

问题描述

我将 ShedLock 添加到我的项目中,以防止多次执行预定的工作。我像下面这样配置它,但我得到了

“org.postgresql.util.PSQLException:错误:关系“shedlock”不存在”错误。

这是 lockProviderBean:

@Bean
    public LockProvider lockProvider(DataSource dataSource) {
        return new JdbcTemplateLockProvider(
                JdbcTemplateLockProvider.Configuration.builder()
                        .withJdbcTemplate(new JdbcTemplate(dataSource))
                        .usingDbTime() 
                        .build()
        );
    }

这是预定的工作:

@Scheduled(cron = "${cronProperty:0 00 23 * * *}")
@SchedulerLock(name = "schedulerLockName")
public void scheduledJob() {
       ..............
}

我将这些符号添加到包含 schduledJob 方法的类中:

@EnableScheduling
@Component
@Configuration
@EnableSchedulerLock(defaultLockAtMostFor = "2m")

我正在使用 Spring Data 进行数据库操作并使用以下属性:

spring.datasource.url = jdbc:postgresql://ip:port/databaseName?currentSchema=schemeName
spring.datasource.driver-class-name = org.postgresql.Driver
spring.jpa.database = postgresql
spring.datasource.platform = postgresql
spring.datasource.hikari.maximum-pool-size=5
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.username = username
spring.datasource.password = password

标签: spring-data-jpashedlock

解决方案


您必须按照文档中的说明创建表。


推荐阅读