【问题标题】:Not able to create MySQL table and load initial data in it with Spring Boot after specifying schema.sql and data.sql指定 schema.sql 和 data.sql 后,无法使用 Spring Boot 创建 MySQL 表并在其中加载初始数据
【发布时间】:2019-06-13 21:32:43
【问题描述】:

尽管在src/main/resources 中指定了schema.sqldata.sql,但当我运行mvn clean install 时,我的Spring Boot 应用程序无法创建表架构并在其中加载数据

在我看来,application.properties 中有一些属性配置问题,但不确定是哪一个。

请指导。

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;

【问题讨论】:

    标签: mysql spring spring-boot spring-data-jpa


    【解决方案1】:

    添加

    spring.datasource.initialization-mode=always 
    

    application.properties 中解决了这个问题。

    下面列出了完整的 application.properties 文件。

    # ==============================================================
    # = 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
    

    【讨论】:

      猜你喜欢
      • 2016-10-13
      • 1970-01-01
      • 2017-12-18
      • 1970-01-01
      • 2021-10-06
      • 2015-09-30
      • 1970-01-01
      • 2021-09-29
      • 2018-06-09
      相关资源
      最近更新 更多