2016-09-05 2 views
0

약간의 스프링 부팅 응용 프로그램이 있습니다. 기본 프로필과 mysql 프로필. 기본적으로 inMemory 모드에서 H2 데이터베이스를 시작하려고합니다. 두 데이터베이스 모두 두 개의 flyway 파일로 초기화합니다 (데이터베이스 설정 및 일부 테스트 데이터). mysql 모드에서 응용 프로그램을 실행하면 정상적으로 작동합니다. 기본 모드에서 응용 프로그램을 실행하면 testdata는없고 emtpy 테이블 만 얻습니다. 유일한 차이점은 콘솔에서 4 개의 최대 절전 모드 외래 키 오류가 발생한다는 것입니다.이송 경로 데이터 가져 오기는 H2 용이 아닌 MySQL에서만 작동합니다.

콘솔

2016-09-05 13:43:40.652 INFO 9152 --- [ restartedMain] org.hibernate.Version     : HHH000412: Hibernate Core {5.0.9.Final} 
2016-09-05 13:43:40.654 INFO 9152 --- [ restartedMain] org.hibernate.cfg.Environment   : HHH000206: hibernate.properties not found 
2016-09-05 13:43:40.655 INFO 9152 --- [ restartedMain] org.hibernate.cfg.Environment   : HHH000021: Bytecode provider name : javassist 
2016-09-05 13:43:40.699 INFO 9152 --- [ restartedMain] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 
2016-09-05 13:43:40.841 INFO 9152 --- [ restartedMain] org.hibernate.dialect.Dialect   : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect 
2016-09-05 13:43:41.415 INFO 9152 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000227: Running hbm2ddl schema export 
Hibernate: alter table address drop foreign key FK1a5lwjqa8jpvcavywjsurtelc 
2016-09-05 13:43:41.417 ERROR 9152 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000389: Unsuccessful: alter table address drop foreign key FK1a5lwjqa8jpvcavywjsurtelc 
2016-09-05 13:43:41.417 ERROR 9152 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : Bedingung "FK1A5LWJQA8JPVCAVYWJSURTELC" nicht gefunden 
Constraint "FK1A5LWJQA8JPVCAVYWJSURTELC" not found; SQL statement: 
alter table address drop foreign key FK1a5lwjqa8jpvcavywjsurtelc [90057-192] 
Hibernate: alter table contract drop foreign key FK5s7r1nq49s36ndq7nlri6hxf7 
2016-09-05 13:43:41.417 ERROR 9152 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000389: Unsuccessful: alter table contract drop foreign key FK5s7r1nq49s36ndq7nlri6hxf7 
2016-09-05 13:43:41.418 ERROR 9152 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : Bedingung "FK5S7R1NQ49S36NDQ7NLRI6HXF7" nicht gefunden 
Constraint "FK5S7R1NQ49S36NDQ7NLRI6HXF7" not found; SQL statement: 
alter table contract drop foreign key FK5s7r1nq49s36ndq7nlri6hxf7 [90057-192] 
Hibernate: drop table if exists address 
Hibernate: drop table if exists company 
Hibernate: drop table if exists contract 
Hibernate: drop table if exists user 
Hibernate: create table address (id bigint not null auto_increment, city varchar(255), country varchar(255), post_code varchar(255), street varchar(255), street_number varchar(255), primary key (id)) 
Hibernate: create table company (id bigint not null auto_increment, name varchar(255), primary key (id)) 
Hibernate: create table contract (id bigint not null auto_increment, billing_cycle varchar(255), description varchar(255), contract_number varchar(255), costs integer, conditions varchar(255), first_possible_end_date date, notice_period_in_days integer, start_date date, user_id bigint, primary key (id)) 
Hibernate: create table user (id bigint not null auto_increment, birth_date date, first_name varchar(255), last_name varchar(255), password varchar(255), username varchar(255), primary key (id)) 
Hibernate: alter table address add constraint FK1a5lwjqa8jpvcavywjsurtelc foreign key (id) references company (id) 
Hibernate: alter table contract add constraint FK5s7r1nq49s36ndq7nlri6hxf7 foreign key (user_id) references user (id) 
2016-09-05 13:43:41.433 INFO 9152 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000230: Schema export complete 
2016-09-05 13:43:41.473 INFO 9152 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 
2016-09-05 13:43:42.066 INFO 9152 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot[email protected]9b60977: startup date [Mon Sep 05 13:43:36 CEST 2016]; root of context hierarchy 

application.properties

# Database 
spring.datasource.url=jdbc:h2:mem:application;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE 
spring.datasource.driver-class-name=org.h2.Driver 
spring.datasource.username=sa 
spring.datasource.password= 
spring.h2.console.enabled = true 

spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect 
spring.jpa.generate-ddl =false 
spring.jpa.show-sql=true 
spring.jpa.hibernate.ddl-auto=create-drop 

CREATE TABLE COMPANY (
    ID BIGINT NOT NULL, 
    NAME VARCHAR(255) NULL, 
    PRIMARY KEY (ID) 
)ENGINE=InnoDB; 

CREATE TABLE USER (
    ID BIGINT NOT NULL, 
    FIRST_NAME VARCHAR(255) NULL, 
    LAST_NAME VARCHAR(255) NULL, 
    BIRTH_DATE DATE NULL, 
    USERNAME VARCHAR(255) NOT NULL, 
    PASSWORD VARCHAR(255) NOT NULL, 
    PRIMARY KEY (ID), 
    UNIQUE INDEX USERNAME_UNIQUE (USERNAME ASC) 
)ENGINE=InnoDB; 

CREATE TABLE CONTRACT (
    ID BIGINT NOT NULL, 
    COMPANY_ID BIGINT(20) NOT NULL, 
    CONTRACT_NUMBER VARCHAR(255) NOT NULL, 
    START_DATE DATE NOT NULL, 
    FIRST_POSSIBLE_END_DATE DATE NOT NULL, 
    NOTICE_PERIOD_IN_DAYS INTEGER NOT NULL, 
    COSTS INTEGER NOT NULL, 
    BILLING_CYCLE VARCHAR(40) NOT NULL, 
    CONDITIONS VARCHAR(255) NOT NULL, 
    COMMENTS VARCHAR(255) NOT NULL, 
    USER_ID BIGINT, 
    PRIMARY KEY (ID), 
    FOREIGN KEY (COMPANY_ID) REFERENCES COMPANY(ID), 
    FOREIGN KEY (USER_ID) REFERENCES USER(ID) 
)ENGINE=InnoDB; 

CREATE TABLE ADDRESS (
    ID BIGINT NOT NULL, 
    POST_CODE VARCHAR(10) NOT NULL, 
    COUNTRY VARCHAR(45) NOT NULL, 
    CITY VARCHAR(45) NOT NULL, 
    STREET VARCHAR(45) NOT NULL, 
    STREET_NUMBER VARCHAR(255) NOT NULL, 
    COMPANY_ID BIGINT, 
    PRIMARY KEY (ID), 
    FOREIGN KEY (COMPANY_ID) REFERENCES COMPANY(ID) 
)ENGINE=InnoDB; 
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/application 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 
spring.datasource.username=root 
spring.datasource.password= 

spring.jpa.generate-ddl =false 
spring.jpa.show-sql=true 
spring.jpa.hibernate.ddl-auto=update 

spring.datasource.testWhileIdle = true 
spring.datasource.timeBetweenEvictionRunsMillis = 3600000 
spring.datasource.validationQuery = SELECT 1 

V0_0_0_0__init.sql을 application-mysql.properties

V0_0_0_1__testdata.sql

INSERT INTO COMPANY 
    (ID,NAME) 
VALUES 
    (1,'Telekom'), 
    (2,'Allianz'), 
    (3,'ADAC'), 
    (4,'Vodafon'); 

INSERT INTO USER 
    (ID,FIRST_NAME,LAST_NAME,BIRTH_DATE,USERNAME,PASSWORD) 
VALUES 
    (1,'Max','Muster','1991-08-29','max.muster','1234'), 
    (2,'Peter','Silie','1992-07-03','peter.silie','1234'), 
    (3,'Klär','Grube','1990-03-01','klär.grube','1234'); 

INSERT INTO CONTRACT 
    (ID,COMPANY_ID,CONTRACT_NUMBER,START_DATE,FIRST_POSSIBLE_END_DATE,NOTICE_PERIOD_IN_DAYS,COSTS,BILLING_CYCLE,CONDITIONS,COMMENTS,USER_ID) 
VALUES 
    (1,1,'123456789','2014-01-01','2016-01-01',90,'5000','MONTHLY','SMS Flat, Telefonie Flat, 1GB','',1), 
    (2,2,'543765687','2015-07-15','2015-08-15',30,'500','YEARLY','5.000.000, Fahrradversicherung','',3), 
    (3,3,'743912309','2016-03-31','2017-03-31',30,'1499','YEARLY','ADAC Plus','',2), 
    (4,4,'777666888','2013-04-10','2013-04-10',90,'4500','MONTHLY','SMS Flat, Telefonie Flat, 2GB','',1); 

INSERT INTO ADDRESS 
    (ID,POST_CODE,COUNTRY,CITY,STREET,STREET_NUMBER,COMPANY_ID) 
VALUES 
    (1,'12345','GERMANY','Berlin','Hauptstrasse','3',1), 
    (2,'12345','GERMANY','Berlin','Hauptstrasse','2',2), 
    (3,'12345','GERMANY','Berlin','Hauptstrasse','26b',3), 
    (4,'12345','GERMANY','Berlin','Hauptstrasse','5',4); 

답변

0

솔루션 :

application.properties

spring.jpa.hibernate.ddl-auto=none

가에 생성 놓기 전에

. flyway가 데이터베이스를 설정하고, 최대 절전 모드에서 데이터베이스를 삭제 한 다음 다시 만듭니다. mysql 데이터베이스에서 mysql 모드로 작동하는 이유는 무엇입니까?

0

는 외래 키와 대소 문자 변환의 이름에 문제가 없습니다. 처럼 FKS 이름을보십시오 :

CONSTRAINT FK_ADDRESS_COMPANY FOREIGN KEY (COMPANY_ID) REFERENCES COMPANY(ID) 
+0

아무런 영향이 없습니다. 이전과 같은 문제. – Woody

관련 문제