Spring启动data.sql避免每次启动时多次执行

时间:2018-02-12 18:59:11

标签: spring spring-boot spring-data

Spring boot提供了使用data.sql在启动时将初始数据加载到数据库中的绝佳选择。问题是,我有一个表,其中列是唯一的,spring会尝试在每次启动时执行sqls,如果数据已经存在则会失败。现在问题是,处理这种情况的正确方法是什么,有没有办法告诉spring何时执行以及何时不执行data.sql文件。谢谢

1 个答案:

答案 0 :(得分:1)

您有几种选择:

  • 使用spring.datasource.initialize=false
  • 启动时禁用数据库初始化
  • 使用spring.datasource.continue-on-error=true
  • 关闭Spring Boot的快速失败行为

第二个选项会让您的Spring Boot应用程序通过忽略脚本执行引起的任何异常来正常启动。

Spring Boot Documentation

如果上述两个选项都不符合您的要求,正如Darren Forsythe在评论中提到的那样,请考虑像Flyway或Liquibase这样的数据迁移工具。 Spring boot为这两种工具提供了很好的支持。检查this