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

如何在Spring Boot 1.4.1中为@DataJpaTest将mode=mysql添加到嵌入式H2 DB?

傅越
2023-03-14

我在使用模式时遇到一些问题。sql文件,用于在执行junit测试时创建我的sql模式,而此模式包含特定于mysql的表达式。我必须将mode=mysql添加到H2 url中。

例如如下所示:jdbc:h2:mem:testd;模式=MYSQL

但是Spring boot会自动使用Enum中定义org.springframework.boot.autoconfigure.jdbc.url及其url

jdbc:h2:mem:testdb;DB\U CLOSE\U DELAY=-1;DB\u CLOSE\u ON\u EXIT=FALSE

我已经尝试了类似的方法来让它工作,但是Spring没有从我的test-application.properties.中读取spring.datasource.url=jdbc: h2: mem: testdb; MODE=MYSQL我test-application.properties中的所有其他设置都已成功读取。

如果我让spring/hibernate用javax创建模式(没有schema.sql文件)。实体中的持久性注释一切正常。

有没有简单的方法来添加模式?

共有3个答案

呼延俊良
2023-03-14

我已经尝试了类似的方法来使其工作,但Spring不采取spring.datasource.url=jdbc: h2: mem: testdb; MODE=MYSQL从我的test-application.properties

您是否尝试附加此参数而不是重写现有参数?

spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL

我test-application.properties中的所有其他设置都已成功读取。

我认为该文件应该命名为应用程序测试。属性。

屠浩
2023-03-14

我也有同样的问题。它在运行测试时不会获取url。我正在使用flyway管理我的脚本。通过遵循以下几个步骤,我能够将所有这些工作结合在一起。

创建了V1\u初始化。在src/test/resources/db/migration中编写sql脚本,这是flyway运行的第一个脚本。

SET MODE MYSQL; /* another h2 way to set mode */

CREATE SCHEMA IF NOT EXISTS "public"; /* required due to issue with flyway --> https://stackoverflow.com/a/19115417/1224584*/

更新了应用程序测试。yaml要包括架构名称public:

flyway:
  schemas: public

确保测试指定了配置文件:@ActiveProfiles(“测试”)

太叔富
2023-03-14

设置

spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL

应用中测试。属性,以及

@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles("test")

在测试类上

 类似资料:
  • 基本上,我想在Tomcat 8嵌入式中运行一些Rest类。我不确定如何将它们添加到我正在创建的tomcat嵌入式实例中。所以这就是我所做的。这里只有泽西班: 下面是我创建Tomcat的类: 正如你看到的,带问号的部分给我制造麻烦。还有一个lats问题,这就是我应该添加这些类以在服务器上运行的方式,对吗? 更新我添加了Michal Gajdos建议的行,但在启动时我得到: 线程“main”java中

  • 我已经搜索了这个问题,但我没有找到任何关于这个案例的东西。我发现了很多“如何将Spring Boot WAR部署到Tomcat”,但是没有关于用Spring Boot包装现有的Tomcat WAR的内容。 我正在尝试用Spring Boot“包装器”包装一个现有的WAR,这样就不必重新配置现有的代码库。这个解决方案不起作用,因为它依赖于在绝对位置可用的WAR,而我们正试图将“应用程序”WAR打包在

  • 问题内容: Spring Boot的嵌入式tomcat非常便于开发和部署。 但是,如果应该添加另一个(第三方)WAR文件(例如GeoServer)怎么办? 也许以下是正常过程: 安装普通的Tomcat服务器。 将Spring Boot应用程序构建为WAR文件,并将其添加到Tomcat的webapps文件夹中。 还将另一个(第三方)WAR文件添加到webapps文件夹。 但是,如果可以进行以下配置,

  • 问题内容: 我们有一列是一个简单的整数。我们要在每行中添加值10。我们如何在mysql中的sql中执行该操作? 实际上,我们还有另一列需要做同样的事情,这是一个日期。我们需要在日期上加上一个月。怎么做? 问题答案: 整数: 日期:

  • 请帮助我,如果有人设置tomcat会话复制之前。

  • 我对SpringSTS有疑问。我收到了以下消息: 尝试下载模板项目时,这是: “下载或解析描述符文件'https://raw.github.com/SpringSource/spring-integration-templates/master/si-sts-templates/builds/descriptor.xml'时出错: org . eclipse . core . runtime .