目录

一.问题

 二.源码查看       

 三.最新配置参数列表    

四.注意事项


一.问题

        最近在使用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连接数据库的时候其实不是必需属性。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐