【问题标题】:Spring batch custom DB schema initSpring批处理自定义数据库模式初始化
【发布时间】:2019-10-28 20:38:28
【问题描述】:

我的spring-boot配置是:

spring:
  profiles: database
  datasource:
    platform: mysql
    continueOnError: false
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test
    username: root
    data: data-mysql.sql
    schema: schema-mysql.sql
  batch:
    initializer:
      enabled: true
    initialize-schema: always
    job:
      enabled: true
  jpa:
    database-platform: org.hibernate.dialect.MySQLDialect
    show-sql: true
    hibernate:
      ddl-auto: create-drop

我的期望是:

  • spring-batch schema 每次都会从一开始创建;
  • schema-mysql.sql 中指定的customer 表将在每个开始时间创建;
  • customer 数据将在每次开始时间填充data-mysql.sql 中指定;

但实际结果是:

  • spring-batch schema 只是第一次创建;
  • customer 表从未填充数据;
  • customer 表从未创建;

问题:

我应该如何更改我的配置以获得下一个结果:

  • 如果spring-batch schema 只创建一次或每次开始时间都可以(但应该为缺勤情况创建);
  • customer 表只能创建一次或每次;
  • 如果没有数据,customer 表应该填充数据。

详情:

  • spring-boot 2.2.0.M3;
  • Gradle 5.4.1;
  • mariadb.

【问题讨论】:

  • 首先删除hibernate: ddl-auto: create-drop 因为你已经在使用schema.sql了
  • @SimonMartinelli,谢谢。我知道,这不是我的目的所必需的,但我尝试了很多不同的组合,但没有任何效果。 (我的意思是ddl-auto = never 或者缺席也不行)

标签: java mysql spring-boot spring-batch


【解决方案1】:

我看不到您配置为执行架构和数据文件。

你必须添加:

spring:
    datasource:
        initialization-mode: always

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    相关资源
    最近更新 更多