【发布时间】:2019-12-18 19:29:09
【问题描述】:
我遇到了类似的问题。我有 2 个数据源,主数据源和第二个数据源应该由 Spring Batch 使用。 spring batch 正在主数据源中创建模式并尝试在第二个中插入/更新这是我的代码:
异常:java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象:语句 [SELECT JOB_INSTANCE_ID, JOB_NAME from BATCH_JOB_INSTANCE where JOB_NAME = 中的 BATCH_JOB_INSTANCE和 JOB_KEY = ?]
public class DataSourceConfig {
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public DataSourceProperties primaryDataSourceProperties() {
return new DataSourceProperties();
}
@Bean("secondDataSourceProperties")
@ConfigurationProperties("spring.second-datasource")
public DataSourceProperties secondDataSourceProperties() {
return new DataSourceProperties();
}
/**
* Create primary (default) DataSource.
*/
@Bean
@Primary
public DataSource primaryDataSource(@Autowired DataSourceProperties props) {
return props.initializeDataSourceBuilder().build();
}
/**
* Create second DataSource and named "secondDatasource".
*/
@Bean("secondDatasource")
public DataSource secondDataSource(@Autowired
@Qualifier("secondDataSourceProperties") DataSourceProperties props) {
return props.initializeDataSourceBuilder().build();
}
}
和
@Component
@Configuration
public class MyBatchConfigurer extends DefaultBatchConfigurer {
/**
* Initialize the BatchConfigurer to use the datasource of your choosing
*
* @param secondDatasource
*/
@Autowired
@Qualifier("secondDatasource")
DataSource datasource;
@Override
protected JobRepository createJobRepository() throws Exception {
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(datasource);
factory.setTransactionManager(transactionManager());
factory.afterPropertiesSet();
return factory.getObject();
}
private PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(datasource);
}
}
【问题讨论】:
-
欢迎来到 StackOverflow!错误消息对我来说并不模棱两可。您是否已经检查了用户权限和表的存在?
-
是的,我做到了。未创建表
-
spring batch is creating the schema in the primary data source这是不正确的。 Spring Batch 不创建表。应该是 Spring Boot。因此,请确保在 Spring Batch 配置中使用由 spring Boot 初始化的相同数据源。
标签: java spring spring-boot spring-batch