From dab78e8b9a3a6545b47adc58252aded7485bb541 Mon Sep 17 00:00:00 2001 From: qibaoguang Date: Mon, 6 Apr 2015 00:14:57 +0800 Subject: [PATCH] Update 68.3. Initialize a database using Spring JDBC.md --- .../68.3. Initialize a database using Spring JDBC.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/IX. ‘How-to’ guides/68.3. Initialize a database using Spring JDBC.md b/IX. ‘How-to’ guides/68.3. Initialize a database using Spring JDBC.md index e69de29..7719655 100644 --- a/IX. ‘How-to’ guides/68.3. Initialize a database using Spring JDBC.md +++ b/IX. ‘How-to’ guides/68.3. Initialize a database using Spring JDBC.md @@ -0,0 +1,7 @@ +### 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初始化新数据。