【问题标题】:Spring Boot Spring Batch : Multiple DataSource without Spring batch metadata tableSpring Boot Spring Batch:没有 Spring 批处理元数据表的多个 DataSource
【发布时间】:2019-01-19 04:38:07
【问题描述】:

我正在为 Spring 批处理编写 Spring Boot 应用程序,其中 ItemReader 从 Oracle 数据库读取数据并将数据写入 postgres sql ,但我收到以下错误

Caused by: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT JOB_INSTANCE_ID, JOB_NAME from BATCH_JOB_INSTANCE where JOB_NAME = ? order by JOB_INSTANCE_ID desc]; nested exception is org.postgresql.util.PSQLException: ERROR: relation "batch_job_instance" does not exist
  Position: 39
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:234) ~[spring-jdbc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) ~[spring-jdbc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1402) ~[spring-jdbc-5.0.8.RELEASE.jar:5.0.8.RELEASE]

我不想创建 Spring Batch 元数据表,我的应用程序不需要监视作业,请就此提出建议。提前致谢!!

【问题讨论】:

    标签: oracle spring-boot spring-batch postgresql-9.1


    【解决方案1】:

    使用下面的属性

    spring.batch.initialize-schema=总是或从不

    否则您可以在您的数据库中创建表。 您还可以在下面的 jar 中找到各个数据库的架构。
    如果您使用的是 maven,则在 maven 依赖项中添加 Spring-batch-core.jar。 在类路径中:/org/springframework/batch/core/

    【讨论】:

      【解决方案2】:

      根据您的例外情况,Spring Batch 似乎配置为使用 Postgres 数据源作为其元数据,但找不到 BATCH_JOB_INSTANCE 表。

      如果您不想使用元数据表,您可以:

      然后您可以为您的阅读器配置一个 Oracle 数据源,为您的编写器配置一个 Postgres 数据源。

      没有什么可以阻止您在 Spring Batch 应用程序中拥有多个数据源,您只需配置哪一个用于您的业务逻辑,哪一个用于 Spring Batch 的内部机制。

      有类似的问题可能会有所帮助,我在这里添加它们以供参考:

      【讨论】:

      猜你喜欢
      • 2017-02-16
      • 2016-04-17
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 2018-07-10
      • 2018-10-24
      • 1970-01-01
      相关资源
      最近更新 更多