当前位置: 首页 > 知识库问答 >
问题:

未在spring batch spring boot sql server应用程序中运行DDL脚本

徐卓
2023-03-14

我的项目有这个要求,用户上传一个必须推送到sql服务器数据库的CSV文件。我按照下面的基本示例将CSV文件加载到sql服务器数据库中。https://github.com/michaelcgood/Spring-Batch-CSV-Example通过更改数据源来运行此存储库,这里我们使用sql服务器而不是内存数据库。

以下是POM文件的新增内容:

<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
<</dependency>

添加到应用程序中。属性文件

spring.datasource.url=jdbc:sqlserver://localhost;databaseName=springbootdb
spring.datasource.username=sa
spring.datasource.password=Projects@123

下面是运行代码库时产生的错误,我们找不到确切的根本原因,我们尝试了google中提到的多种方法,但没有运气,在运行这个Spring批处理Spring boo2.0.4应用程序时,我们面临以下错误:

    spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
o.s.boot.autoconfigure.jdbc.Datasource.initailizer disabled(not running DDL scripts)

at org.html" target="_blank">springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
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 java.sql.SQLServerException: Invalid object name 'BATCH_JOB_INSTANCE'.

我们假设根本原因是以下之一?

1.我们正在使用spring starter项目创建spring批处理配置,因此不知道如何定义默认的表模式和所有配置。

2.可能我们没有访问权限和/或您需要定义架构。http://forum.spring.io/forum/spring-projects/batch/63771-badsqlgrammarexception-running-commandlinejobrunner

3.不确定为什么错误是说无效的对象名“BATCH_JOB_INSTANCE”而不是对象不存在?要为spring batch应用程序创建metadate表,要在运行应用程序之前手动创建metadate表,sql查询列表是什么。

4.we几天来一直在努力寻找问题的根本原因,请建议通过以上github代码库示例进行处理。如果我们在这里错过了任何帮助,请告诉我们。提前谢谢

共有1个答案

齐栋
2023-03-14

您链接到的项目使用内存中的hsqldb实例,因此Spring Boot将自动为您创建Spring Batch元数据表。

如果您想使示例适应您的项目并使用sql服务器(它没有嵌入到您的JVM中),Spring Boot不会创建Spring Batch表(除非您指示它这样做)。在这种情况下,您有两个选项:

>

  • 在运行应用程序之前,针对正在使用的db服务器运行sqlserver的Spring批处理DDL脚本

    或者通过在应用程序中指定以下属性来指示Spring Boot为您执行此操作。属性文件:

    spring。一批初始化模式=始终spring。一批schema=classpath:org/springframework/batch/core/schema sqlserver。sql

  •  类似资料:
    • 我有一个打包成WAR文件的Spring Boot web应用程序,我希望能够按需运行一些任务(脚本或命令)。例如: 初始化数据库模式 以编程方式为数据库设定种子 新版本应用程序(移动文件、数据库操作等)需要时进行数据迁移 验证存储文件和数据库内容之间的数据完整性 如果这些“命令”可以访问与Web应用程序本身相同的bean(服务,DAO)和模型,则实现起来会容易得多。我希望我必须在某个地方创建一个S

    • 我是maven和Struts2的新手。当我尝试运行我的程序时,会出现以下错误:

    • 我正在尝试运行一个简单的Spring Boot应用程序。它只有web作为依赖,当我运行命令clean install,它成功构建,但是在spring-boot运行时它失败了,我不知道它是否是依赖冲突。我还运行了mvn dependency:tree命令,但是我没有发现任何冲突。这是mvn dependency的输出:tree

    • 我被这个错误困住了,当我在android上做构建时,它工作得很好,但是当我在IOS模拟器上运行我的应用程序时,它却显示我这个错误。我无法找出我的代码中的实际问题是什么。请帮我弄清楚这个情况。 我的flutter sdk版本是1.22.4 无法为模拟器生成应用程序。 在iPhone 11 Pro Max上启动应用程序时出错。

    • 问题内容: 我有一个现有的Flask应用程序,并且想找到通往另一个应用程序的路线。更具体地说,第二个应用程序是Plotly Dash应用程序。如何在现有的Flask应用程序中运行Dash应用程序? 我还尝试将路由添加到Dash实例,因为它是Flask应用程序,但出现错误: 问题答案: 从文档: 基本的Flask应用程序可从访问app.server。 你还可以将自己的Flask应用实例传递到Dash

    • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题