spring_reference/IX. ‘How-to’ guides/68.3. Initialize a database...

8 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### 68.3. 使用Spring JDBC初始化数据库
Spring JDBC有一个DataSource初始化特性。Spring Boot默认启用了该特性并从标准的位置schema.sql和data.sql位于classpath根目录加载SQL。此外Spring Boot将加载`schema-${platform}.sql`和`data-${platform}.sql`文件如果存在在这里platform是`spring.datasource.platform`的值比如你可以将它设置为数据库的供应商名称hsqldb, h2, oracle, mysql, postgresql等。Spring Boot默认启用Spring JDBC初始化快速失败特性所以如果脚本导致异常产生那应用程序将启动失败。脚本的位置可以通过设置`spring.datasource.schema`和`spring.datasource.data`来改变,如果设置`spring.datasource.initialize=false`则哪个位置都不会被处理。
你可以设置`spring.datasource.continueOnError=true`禁用快速失败特性。一旦应用程序成熟并被部署了很多次,那该设置就很有用,因为脚本可以充当"可怜人的迁移"-例如,插入失败时意味着数据已经存在,也就没必要阻止应用继续运行。
如果你想要在一个JPA应用中使用schema.sql那如果Hibernate试图创建相同的表`ddl-auto=create-drop`将导致错误产生。为了避免那些错误,可以将`ddl-auto`设置为“”推荐或“none”。不管是否使用`ddl-auto=create-drop`你总可以使用data.sql初始化新数据。