fondo
Recientemente, durante la inicialización de la base de datos de configuración, se encontró
sql:
init:
schema-locations: classpath:db/schema.sql
data-locations: classpath:db/data.sql
username: sa
password:
La búsqueda de información en Internet es similar, y todas son información inútil, por lo que decidí estudiar la inicialización de la base de datos por mi cuenta. Entonces hay lo siguiente.
Observaciones:
Para resolver el problema de que la base de datos no se puede inicializar correctamente, la configuración de la base de datos ha cambiado. Para más detalles, consulte
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;
}
Obviamente, cuando la configuración es incorrecta, el valor predeterminado es desde el classpath
optional:classpath*:" + fallback + "-" + platform + ".sql"
"optional:classpath*:" + fallback + ".sql"
Obtener datos, y la reserva son datos o esquemas, y la plataforma lo es todo.
Por lo tanto, la configuración correcta debe ser
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
Entre ellos, el modo de inicialización debe ser siempre
configuración
Propiedades de origen de datos
Inicialización de la fuente de datos
AbstractScriptDatabaseInitializer
DataSourceScriptDatabaseInitializer
R2dbcScriptDatabaseInitializer
Configuración relacionada con H2
H2ConsoleConfiguración automática
H2ConsoleProperties