赞
踩
最近在配置数据库的初始化时,遇到
sql:
init:
schema-locations: classpath:db/schema.sql
data-locations: classpath:db/data.sql
username: sa
password:
网上搜索资料,大同小异,都是无用的资料,于是决定自己研究下数据库的初始化。于是有了下文。
备注:
解决数据库无法正确初始化的问题,在于数据库的配置发生了变化,详细参考
private static List<String> scriptLocations(List<String> locations, String fallback, String platform) {
if (locations != null) {
return locations;
}
List<String> fallbackLocations = new ArrayList<>();
fallbackLocations.add("optional:classpath*:" + fallback + "-" + platform + ".sql");
fallbackLocations.add("optional:classpath*:" + fallback + ".sql");
return fallbackLocations;
}
显然,当配置错误的时候,默认从 classpath 下的
optional:classpath*:" + fallback + "-" + platform + ".sql"
"optional:classpath*:" + fallback + ".sql"
取数据,而 fallback 为 data 或 schema,platform 为 all。
因此,正确的配置应该是
spring:
datasource:
schema: classpath:/db/table.sql;/db/table1.sql
data: classpath:/db/data.sql
data-username: sa
schema-username: sa
schema-password:
data-password:
initialization-mode: always
其中,initialization-mode 必须是 always
DataSourceProperties
AbstractScriptDatabaseInitializer
DataSourceScriptDatabaseInitializer
R2dbcScriptDatabaseInitializer
H2ConsoleAutoConfiguration
H2ConsoleProperties
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。