运行程序时遇到运行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”,但是,它并没有创建表。请指教。
答案 0 :(得分:5)
就我而言(Spring Boot 2.0.0+),只有将属性设置spring.datasource.initialization-mode=always
与spring.jpa.hibernate.ddl-auto=none
结合使用时,它才能按预期工作。
答案 1 :(得分:2)
那是因为Spring Boot已签入DataSourceInitializer's initSchema()
方法。
仅当您的数据库类型为H2,DERBY,HSQL
但是,您可以通过在application.properties
中使用以下设置来覆盖此行为spring.datasource.initialization-mode=always