Spring Boot2.x 必须添加 initialization-mode配置才会执行,默认为EMBEDDED也就是嵌入式数据库(H2这种),如果要在mysql下执行需要设置成为always

把需要初始化的sql文件放在项目resources目录下,也可以是其他目录(需要写入绝对路径相对路径不方便部署)

如果是项目resources目录,则路径必须添加classpath:

如果有多个sql文件,可以用逗号分隔

配置文件

spring:
  datasource:
    initialization-mode: always
    schema: classpath:mysql_schema.sql
    schema-username: root
    schema-password:
    username: root
    password:
    data: classpath:mysql_data.sql
    data-username: root
    data-password:
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:mysql://localhost:3306/spring_security_jpa_demo
  jpa:
    generate-ddl: false
    show-sql: true

对于内存数据,initialization-mode不需要配置,resources目录下有schema.sql文件就会执行.