# 75.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.continue-on-error=true`禁用快速失败特性。一旦应用程序成熟并被部署了很多次，那该设置就很有用，因为脚本可以充当"可怜人的迁移"-例如，插入失败时意味着数据已经存在，也就没必要阻止应用继续运行。

如果你想要在一个JPA应用中使用`schema.sql`，那如果Hibernate试图创建相同的表，`ddl-auto=create-drop`将导致错误产生。为了避免那些错误，可以将`ddl-auto`设置为“”（推荐）或`none`。不管是否使用`ddl-auto=create-drop`，你总可以使用`data.sql`初始化新数据。
