@DataJpaTest용 Spring Boot 1.4.1의 내장 H2 DB에 mode=syslog를 추가하는 방법은 무엇입니까?
junit 테스트를 실행할 때 schema.sql 파일을 사용하여 schema.sql 스키마를 만드는 데 문제가 있습니다.이 스키마에는 mysql 고유의 표현이 포함되어 있습니다.를 추가해야 합니다.mode=mysql
H2 URL로 이동합니다.
예를 들어 다음과 같습니다.jdbc:h2:mem:testd;MODE=MYSQL
그러나 Spring boot에서는 enum org.springframework.boot.autoconfigure.jdbc에 정의된 URL이 자동으로 사용됩니다.Embedded Database Connection과 URL
jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
.
나는 이것을 작동시키기 위해 유사한 접근법을 시도했지만, 봄은 그것을 취하지 않습니다.spring.datasource.url=jdbc:h2:mem:testdb;MODE=MYSQL
test-application.properties를 참조해 주세요.test-application.properties의 다른 설정은 모두 정상적으로 읽혔습니다.
spring/hibernate가 스키마(schema.sql 파일 없음)를 작성하게 하면 엔티티에 javax.persistence 주석이 있는 스키마는 정상적으로 동작합니다.
모드를 추가하는 간단한 방법이 있나요?
세트
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL
application-test.properties에 추가되어 있습니다.
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles("test")
시험반에서.
나도 같은 문제를 겪고 있었어테스트 실행 시 URL이 선택되지 않습니다.스크립트를 관리하기 위해 플라이웨이를 사용하고 있습니다.저는 이 몇 가지 단계를 따름으로써 이 모든 것을 함께 할 수 있었습니다.
작성했다V1_init.sql
src/test/db/db/db/db로 스크립트가 실행되도록 합니다.
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*/
갱신필application-test.yaml
스키마 이름 public을 포함합니다.
flyway:
schemas: public
테스트에서 프로파일을 지정했는지 확인합니다.@ActiveProfiles("test")
이 기능을 수행하기 위해 유사한 방법을 시도했지만 스프링이 test-application.properties에서 spring.datasource.url=jdbc:h2:mem:testdb;MODE=Spring을 가져오지 않습니다.
기존 매개 변수를 다시 쓰는 대신 이 매개 변수를 추가하려고 시도했습니까?
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL
test-application.properties의 다른 설정은 모두 정상적으로 읽혔습니다.
나는 그 파일에 이름을 붙여야 한다고 생각했다.application-test.properties
.
다음 구성으로 실행할 수 있었습니다.
# for integration tests use H2 in MySQL mode
spring.datasource.url=jdbc:h2:mem:testdb;DATABASE_TO_LOWER=TRUE;MODE=MySQL;
spring.jpa.database-platform=org.hibernate.dialect.MariaDBDialect
여기서의 주된 트릭은 Hibernate가 MariaDB 방언용 SQL 스크립트를 생성하도록 강제하는 것입니다.그렇지 않으면 Hibernate는 이미 MySQL과 같은 명령어를 기다리고 있을 때 H2 사투리를 사용하려고 하기 때문입니다.
또한 나는 좀 더 신선하게 사용하려고 노력했다.MariaDB103Dialect
마리아DB 10.3을 클릭합니다.
설정해야 합니다.MYSQL
h2 모드 및 임베디드 데이터베이스의 데이터 소스 URL 치환을 비활성화합니다.
application-test.yaml
spring:
datasource:
url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false;MODE=MYSQL
test:
database:
replace: NONE
언급URL : https://stackoverflow.com/questions/42364935/how-to-add-the-mode-mysql-to-embedded-h2-db-in-spring-boot-1-4-1-for-datajpates
'programing' 카테고리의 다른 글
@ConfigurationProperties 스프링 부팅 구성 주석 프로세서를 클래스 경로에서 찾을 수 없습니다. (0) | 2023.03.22 |
---|---|
PHP: strlen이 바이트 길이 대신 문자 길이를 반환합니다. (0) | 2023.03.22 |
RefCursor 반환 유형을 사용하여 Oracle 저장 프로시저를 테스트하는 방법 (0) | 2023.03.17 |
배송 방법에 사용자 정의 설명 필드를 추가하는 방법(백엔드) (0) | 2023.03.17 |
Oracle SQL에서 두 날짜/시간 차이를 계산합니다. (0) | 2023.03.17 |