初始化schema.sql脚本 spring boot 最新版本配置
springboot2.5.X 以上版本 schema.sql数据库脚本启动最新配置spring.sql.init.schema-locations=classpath:sql/schema.sqlspring.sql.init.mode=always
·
目录
一.问题
最近在使用springboot 初始化数据库脚本的时候,发现springboot 2.6.4版本中的 spring.datasource.schema 方法已经被弃用了。且程序无法正常初始化数据库.sql 脚本。
(spring.datasource.schema 该方法在springboot 2.5.X 的版本已经被弃用。)那么最新的数据库初始化 yml/properties 配置是什么呢?
二.源码查看
通过阅读源码发现 spring.datasource.schema 方法 被替换成了 spring.sql.init.schema-locations 方法;spring.datasource.initializationMode 方法 被替换成了 spring.sql.init.mode 方法。所以我们把配置修改如下:
这样程序就可以正常初始化.sql脚本了。
三.最新配置参数列表
除了上面用到的配置属性之外,还有一些其他的配置,下面详细讲解一下作用。
- spring.sql.init.enabled:是否启动初始化的开关,默认是true。如果不想执行初始化脚本,设置为false即可。通过-D的命令行参数会更容易控制。
- spring.sql.init.username和spring.sql.init.password:配置执行初始化脚本的用户名与密码。这个非常有必要,因为安全管理要求,通常给业务应用分配的用户对一些建表删表等命令没有权限。这样就可以与datasource中的用户分开管理。
- spring.sql.init.schema-locations:配置与schema变更相关的sql脚本,可配置多个(默认用;分割)
- spring.sql.init.data-locations:用来配置与数据相关的sql脚本,可配置多个(默认用;分割)
- spring.sql.init.encoding:配置脚本文件的编码
- spring.sql.init.separator:配置多个sql文件的分隔符,默认是;
- spring.sql.init.continue-on-error:如果执行脚本过程中碰到错误是否继续,默认是false`;所以,上面的例子第二次执行的时候会报错并启动失败,因为第一次执行的时候表已经存在。
四.注意事项
另外提几个需要注意的点。
- springboot 2.0.X 以上版本 配置schema 时,需带有
- spring.datasource.initialization-mode 属性
- springboot 2.3.X 中有的版本则必须配置
-
spring.datasource.driver-class-name 属性 ,schema.sql 才可被初始化。
- 而driver-class-name 属性在hakari连接数据库的时候其实不是必需属性。
更多推荐
已为社区贡献1条内容
所有评论(0)