spring boot 配置sqlserver数据库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot 配置sqlserver数据库相关的知识,希望对你有一定的参考价值。
参考技术A 1、pom文件配置2、配置文件
2.1基础配置文件
2.2 开发环境配置环境
2.3 运行环境配置
2.4 测试环境配置
不使用 spring batch + spring boot + sql server 应用程序运行 DDL 脚本
【中文标题】不使用 spring batch + spring boot + sql server 应用程序运行 DDL 脚本【英文标题】:Not running DDL scripts with spring batch + spring boot + sql server application 【发布时间】:2019-02-07 12:29:05 【问题描述】:我的项目有这个要求,用户上传一个 CSV 文件,该文件必须被推送到 sql server 数据库。 我按照下面的基本示例将 CSV 文件加载到 sql server 数据库中。 https://github.com/michaelcgood/Spring-Batch-CSV-Example 通过更改数据源来运行这个 repo,这里我们使用 sql server 而不是内存数据库。
这是对 POM 文件的补充:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
<</dependency>
applications.properties 文件的补充
spring.datasource.url=jdbc:sqlserver://localhost;databaseName=springbootdb
spring.datasource.username=sa
spring.datasource.password=Projects@123
以下是运行代码库时产生的错误,我们无法找到确切的根本原因,我们尝试了谷歌中提到的多种方法但没有运气,同时运行我们面临的这个 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.我们正在使用 spring starter 项目来创建 spring 批处理配置,所以不知道如何定义默认表架构和所有内容。
2.也许我们没有访问权限和/或您需要定义架构。 http://forum.spring.io/forum/spring-projects/batch/63771-badsqlgrammarexception-running-commandlinejobrunner
3.不确定为什么错误是说无效的对象名称“BATCH_JOB_INSTANCE”而不是对象不存在? 为spring批处理应用程序创建元数据表的sql查询列表是什么,在运行应用程序之前手动创建它。
4.我们几天来一直在努力寻找问题的根本原因,请通过上述 github 代码库示例提出建议。 这里的任何帮助将不胜感激。如果我们在这里遗漏了什么,请告诉我们。提前致谢
【问题讨论】:
那么那些应该被执行的 DDL 脚本在哪里? 这里是它的 DDL 脚本github.com/michaelcgood/Spring-Batch-CSV-Example/blob/master/… 它不会创建表BATCH_JOB_INSTANCE
@jens 你能否解释一下你的答案,你的意思是 BATCH_JOB_INSTANCE 不是由我们的应用程序创建的?
您链接到的脚本不会创建表BATCH_JOB_INSTANCE
。您的应用程序失败并显示该表不存在的错误。我不明白为什么这种事件组合会导致标题中的问题:“未运行 DDL 脚本”。无论您的脚本是否被执行,我都不会创建有问题的表。
【参考方案1】:
您要链接的项目使用内存中的 hsqldb 实例,因此 Spring Boot 会自动为您创建 Spring Batch 元数据表。
如果你想使示例适应你的项目并使用 sql server(它没有嵌入到你的 JVM 中),Spring Boot 将不创建 Spring Batch 表(除非你指示它这样做)。在这种情况下,您有两种选择:
针对您正在使用的数据库服务器运行Spring Batch DDL script for sqlserver在运行您的应用程序之前
或者通过在 application.properties
文件中指定以下属性来指示 Spring Boot 为您执行此操作:
spring.batch.initialize-schema=always
spring.batch.schema=classpath:org/springframework/batch/core/schema-sqlserver.sql
【讨论】:
谢谢,我们决定不通过 prod 应用程序创建 metadatable/ sql 表,我们只想插入记录。我怎么能跳过他们这些创作?在尝试创建 bean 'HibernateJpaAutoConfiguration' 时出错。请建议我需要为此做哪些更改github.com/michaelcgood/Spring-Batch-CSV-Example 我们正在努力修复它,请下载并尝试使用此 repo。非常感谢 >We decided not to create metadatable/ sql table via prod application, we wan to insert only record.
在这种情况下,您需要告诉 Spring Boot 永远不要尝试使用 spring.batch.initialize-schema=never
初始化模式。您需要使用基于 Map 的作业存储库或使用 Spring Batch 的嵌入式数据库。见***.com/a/44243647/5019386以上是关于spring boot 配置sqlserver数据库的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot + Spring Batch + HSQLDB -> 为 JobRepository 配置 HSQLDB
在spring-boot启动期间tomcat数据源不检查有效连接?
spring boot: spring boot+jdbctemplate+sql server