简体   繁体   中英

Not able to create MySQL table and load initial data in it with Spring Boot after specifying schema.sql and data.sql

Despite specifying both schema.sql and data.sql in src/main/resources my Spring Boot application is not able to create table schema and load data in it when I run mvn clean install

To me it looks like some property configuration issue in application.properties but not sure which one.

Please guide.

pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

src/main/resources/application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/agrisell-db
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=true
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.generate-ddl=true

src/main/resources/schema.sql

CREATE TABLE state
(
  state_cd           varchar(2)   NOT NULL,
  state_name         varchar(100) NOT NULL,
  create_modified_by varchar(50)  NOT NULL DEFAULT 'admin',
  create_modified_dt datetime     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  active             char(1)      NOT NULL DEFAULT 'Y',
  PRIMARY KEY (state_cd),
  UNIQUE KEY state_name (state_name)
);

src/main/resources/data.sql

DELETE FROM STATE;
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('AL','Alabama ');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('AK','Alaska');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('AZ','Arizona');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('AR','Arkansas');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('CA','California');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('CO','Colorado');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('CT','Connecticut');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('DE','Delaware');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('FL','Florida');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('GA','Georgia');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('HI','Hawaii');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('ID','Idaho');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('IL','Illinois');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('IN','Indiana');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('IA','Iowa');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('KS','Kansas');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('KY','Kentucky');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('LA','Louisiana');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('ME','Maine');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('MD','Maryland');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('MA','Massachusetts');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('MI','Michigan');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('MN','Minnesota');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('MS','Mississippi');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('MO','Missouri');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('MT','Montana');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('NE','Nebraska');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('NV','Nevada');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('NH','New Hampshire');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('NJ','New Jersey');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('NM','New Mexico');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('NY','New York');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('NC','North Carolina');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('ND','North Dakota');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('OH','Ohio');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('OK','Oklahoma');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('OR','Oregon');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('PA','Pennsylvania');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('RI','Rhode Island');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('SC','South Carolina');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('SD','South Dakota');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('TN','Tennessee');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('TX','Texas');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('UT','Utah');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('VT','Vermont');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('VA','Virginia');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('WA','Washington');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('WV','West Virginia');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('WI','Wisconsin');
INSERT INTO STATE (STATE_CD,STATE_NAME) VALUES ('WY','Wyoming');
COMMIT;

Adding

spring.datasource.initialization-mode=always 

in application.propertie s solved the problem.

Complete application.properties files is listed below.

# ==============================================================
# = Data Source
# ==============================================================
spring.datasource.url=jdbc:mysql://localhost:3306/agrisell-db
spring.datasource.username=root
spring.datasource.password=123456
# ==============================================================
# = Hibernate ddl auto (create, create-drop, update)
# ==============================================================
spring.jpa.hibernate.ddl-auto=none
# ==============================================================
# = The SQL dialect makes Hibernate generate better SQL for the chosen database
# ==============================================================
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
# ==============================================================
# = Initialize the database using data.sql script
# ==============================================================
spring.datasource.initialization-mode=always
# ==============================================================
# = Show or not log for each sql query
# ==============================================================
spring.jpa.show-sql=true
# ==============================================================
# = Keep the connection alive if idle for a long time (needed in production)
# ==============================================================
spring.datasource.testWhileIdle=true
spring.datasource.validationQuery=SELECT 1

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM