Не запускаются DDL-скрипты с Spring Batch + Spring Boot + Серверное приложение SQL - PullRequest
0 голосов
/ 02 сентября 2018

В моем проекте есть это требование, когда пользователь загружает CSV-файл, который необходимо отправить в базу данных сервера sql. Я следую приведенному ниже базовому примеру, чтобы загрузить CSV-файл в базу данных SQL Server. https://github.com/michaelcgood/Spring-Batch-CSV-Example запустив этот репозиторий, внеся изменения в источник данных, здесь мы используем сервер SQL вместо базы данных в памяти.

вот дополнение к файлу POM:

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

дополнения к файлу application.properties

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

Ниже приведена ошибка, сгенерированная во время работы базы кода, мы не смогли найти точную основную причину, потому что мы попробовали несколько подходов, как было упомянуто в Google, но безуспешно, пока мы работаем с этим приложением spring batch + spring boot 2.0.4, с которым мы сталкиваемся следующие ошибки:

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

at org.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.Мы используем проект пружинного стартера для создания конфигурации пакета пружины, поэтому не знаем, как мы можем определить схему таблицы по умолчанию и все.

2.Может быть, у нас нет доступа и / или вам нужно определить схему. http://forum.spring.io/forum/spring-projects/batch/63771-badsqlgrammarexception-running-commandlinejobrunner

3.Не уверен в том, почему в сообщении об ошибке говорится, что Неверное имя объекта «BATCH_JOB_INSTANCE» вместо объекта не существует? Что такое список SQL-запросов для создания таблицы метаданных для весеннего пакетного приложения, чтобы создать его вручную перед запуском приложения.

4. Мы изо всех сил пытаемся найти основную причину проблемы за пару дней. Пожалуйста, предложите подтвердить, взяв приведенный выше пример базы кода github. любая помощь здесь будет оценена. Пожалуйста, дайте нам знать, если мы что-то здесь упустили. Заранее спасибо

1 Ответ

0 голосов
/ 03 сентября 2018

Проект, на который вы ссылаетесь, использует экземпляр hsqldb в памяти, поэтому Spring Boot автоматически создаст для вас таблицы метаданных Spring Batch.

Если вы хотите адаптировать образец к своему проекту и использовать сервер sql (который не встроен в вашу JVM), Spring Boot не создаст таблицы Spring Batch (если вы не указали это сделать) , В этом случае у вас есть два варианта:

  • Запустите Spring Batch DDL-скрипт для sqlserver самостоятельно на сервере БД, который вы используете до запуска вашего приложения

  • Или поручите Spring Boot сделать это за вас, указав следующие свойства в файле application.properties:

    spring.batch.initialize-schema=always spring.batch.schema=classpath:org/springframework/batch/core/schema-sqlserver.sql

...