Spring Boot没有运行schema.sql

时间:2018-03-17 12:24:04

标签: mysql spring-boot

运行程序时遇到运行schema.sql的问题。

在我的pom.xml中,我已经有了mysql config:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

我只有一个班级

@SpringBootApplication
public class Application {...}

在src / resources下,我有schema.sql包含:

DROP TABLE IF EXISTS test_table;

CREATE TABLE test_table (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    ...
);

在src / resources下,我有application.yml包含:

spring.datasource.driverClassName: "com.mysql.jdbc.Driver"
spring.datasource.url: "jdbc:mysql://localhost:3306/sample?useSSL=false"
spring.datasource.username: "****"
spring.datasource.password: "****"

我已经确认我可以在启动应用程序时连接到数据库“sample”,但是,它并没有创建表。请指教。

2 个答案:

答案 0 :(得分:5)

就我而言(Spring Boot 2.0.0+),只有将属性设置spring.datasource.initialization-mode=alwaysspring.jpa.hibernate.ddl-auto=none结合使用时,它才能按预期工作。

答案 1 :(得分:2)

那是因为Spring Boot已签入DataSourceInitializer's initSchema()方法。

enter image description here

仅当您的数据库类型为H2,DERBY,HSQL

时,它才会执行脚本

但是,您可以通过在application.properties

中使用以下设置来覆盖此行为
spring.datasource.initialization-mode=always

DataSourceInitializer.java EmbeddedDatabaseConnection.java