Невозможно работать с таблицами, созданными с помощью Flyway в базе данных H2 - PullRequest
0 голосов
/ 27 февраля 2020

Я новичок в flyway и немного борюсь за создание таблиц с использованием flyway в базе данных H2

Я создал таблицы в своей базе данных oracle с использованием сценария flyway.

Теперь я хочу выполнить тест Junit и создать таблицы, используя скрипт Flyway, но не в oracle База данных. Вместо этого я хочу создать его в базе данных H2 (для модульного теста).

Скрипт Flyway, используемый в моем случае, отличается в обоих сценариях имеют немного другую структуру таблицы.

Ниже приведены структура и конфигурация моего проекта

Project Structure

Ниже представлена ​​конфигурация, представленная в src / main / resources папка

V1.0.0.0.001__tables. sql

CREATE TABLE COMMAND_ACTION 
(COMMAND_TYPE_CD VARCHAR2(50 BYTE) NOT NULL, 
ACTION VARCHAR2(50 BYTE) NOT NULL, 
ACTION_ORDER NUMBER(*,0) NOT NULL, 
CONSTRAINT COMMAND_ACTION_PK PRIMARY KEY (COMMAND_TYPE_CD, ACTION_ORDER),
CONSTRAINT COMMAND_ACTION_FK FOREIGN KEY (ACTION) REFERENCES ACTION_DEFINITION(ACTION)
);

CREATE TABLE COMMAND_ACTION_CONFIGURATION 
(   COMMAND_TYPE_CD VARCHAR2(50 BYTE) NOT NULL, 
ACTION VARCHAR2(50 BYTE) NOT NULL, 
CONFIGURATION VARCHAR2(1024 BYTE) NOT NULL);

application.properties

spring.profiles.active=cca
spring.flyway.table=CCA_SCHEMA_VERSION
spring.flyway.baseline-on-migrate=true
spring.flyway.schemas=CCA
spring.flyway.user=cca
spring.flyway.password=cca

application-cca.properties

spring.datasource.url=jdbc:oracle:thin:@linux:8080:devdb
spring.datasource.jdbc-url=jdbc:oracle:thin:@linux:8080:devdb
spring.datasource.username=cca
spring.datasource.password=cca
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

Ниже представлена ​​конфигурация в папке src / test / resources

V1.0.0.0.001__tables. sql

CREATE TABLE COMMAND_ACTION 
(COMMAND_TYPE_CD VARCHAR2(50 BYTE) NOT NULL, 
ACTION VARCHAR2(50 BYTE) NOT NULL, 
ACTION_ORDER NUMBER(10,0) NOT NULL, 
CONSTRAINT COMMAND_ACTION_PK PRIMARY KEY (COMMAND_TYPE_CD, ACTION_ORDER),
CONSTRAINT COMMAND_ACTION_FK FOREIGN KEY (ACTION) REFERENCES ACTION_DEFINITION(ACTION)
);

CREATE TABLE COMMAND_ACTION_CONFIGURATION 
(   COMMAND_TYPE_CD VARCHAR2(50 BYTE) NOT NULL, 
ACTION VARCHAR2(50 BYTE) NOT NULL, 
CONFIGURATION VARCHAR2(1024 BYTE) NOT NULL);

test.properties * 104 5 *

spring.profiles.active=test
spring.flyway.table=CCA_SCHEMA_VERSION
spring.flyway.baseline-on-migrate=true
spring.flyway.user=
spring.flyway.password=

application-test.properties

spring.datasource.url=jdbc:h2:mem:DATABASE
spring.datasource.jdbc-url=jdbc:h2:mem:DATABASE
spring.datasource.username=
spring.datasource.password=
spring.database.driverClassName=org.h2.Driver
spring.flyway.locations=classpath:db/migration
spring.jpa.hibernate.ddl-auto=none
# Enabling H2 Console
spring.h2.console.enabled=true

Я хочу, чтобы мой junit работал независимо от моего src / ресурсов, но не мог достичь вместо этого ошибка ниже, когда я запускаю maven install

        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_66]
2020-02-27T12:45:22,000 DEBUG  CommandService                 [pool-3-thread-1] Timer is started.
2020-02-27T12:45:22,001 ERROR  CommandService                 [pool-3-thread-1] Error in processing command. Error :{}
org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "COMMAND_ACTION" not found; SQL statement:
select ca.command_type_cd,  ca.action, cac.CONFIGURATION from command_action ca
left outer join command_action_configuration cac 
on ca.command_type_cd = cac.command_type_cd  and ca.action = cac.action
order by ca.command_type_cd, ca.action_order [42102-200]

Либо когда-нибудь я получаю ошибку, связанную с контрольной суммой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...