Spring Batch Framework - 自动创建批处理表

新手上路,请多包涵

我刚刚使用 Spring Batch 框架创建了一个批处理作业,但我没有运行 CREATE SQL 的数据库权限。当我尝试运行批处理作业时,我在框架尝试创建 TABLE_BATCH_INSTANCE 时遇到了错误。我尝试禁用

<jdbc:initialize-database data-source="dataSource" enabled="false">
 ...
</jdbc:initialize-database>

但是在我尝试之后我仍然遇到错误

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT JOB_INSTANCE_ID, JOB_NAME from BATCH_JOB_INSTANCE where JOB_NAME = ? and JOB_KEY = ?]; nested exception is java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

无论如何都可以禁用SQL,我只是想测试我的读写器和处理器是否正常工作。

原文由 Einn Hann 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 962
2 个回答

Spring Batch 使用数据库为其恢复/重试功能保存元数据。

如果您不能在数据库中创建表,那么 您必须禁用此行为

如果您可以创建批处理元数据表但不能在运行时创建,那么您可以 手动创建它们

原文由 Sergio 发布,翻译遵循 CC BY-SA 3.0 许可协议

更新: 从 spring 2.5.0 开始,您应该使用 spring.batch.jdbc.initialize-schema 代替。见 来源


使用 Spring Boot 2.0,您可能需要这个: https ://docs.spring.io/spring-boot/docs/2.0.0.M7/reference/htmlsingle/#howto-initialize-a-spring-batch-database

 spring.batch.initialize-schema=always

默认情况下,如果您使用的是嵌入式数据库,它只会创建表。

或者

 spring.batch.initialize-schema=never

永久禁用它。

原文由 BitfulByte 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题