首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringBoot 实现SQL脚本自动执行

SpringBoot 实现SQL脚本自动执行

作者头像
时间静止不是简史
发布2022-04-02 08:15:21
发布2022-04-02 08:15:21
3.3K0
举报
文章被收录于专栏:Java探索之路Java探索之路

SpringBoot 实现配置SQL脚本自动执行

一. 背景

我们可能遇到过这种情况:

  • 在公网开发时, 新增数据表非常容易, 直接登录到对应服务器的mysql / 使用Navicat访问mysql服务器. 然后去执行sql语句或脚本即可
  • 在内网开发时, 由于都在一个网段, 所以操作也比较方便
  • 但是在公网开发, 部署到别的内网环境. 上面的问题就变得非常麻烦. 由于内网环境处于安全考虑禁止外部设备接入.因此需要安装许多工具, 而且有的机器甚至禁用了远程连接(当然你也可以重新配置,但是后果自负). 而且由于各种原因. 负责部署的可能不是开发本人(实施或者是测试或运维人员). 而且每次部署的版本可能因为部署的地方部署的不同而不同, 因此到最后反而会因为SQL表的原因给开发自己徒增工作量.

因此我们需要考虑: Springboot 到底有没有自动执行SQL的功能? 答案是确定的, 而且解决方案不止一种


二. 使用方式

ps: 特别注意 spring.datasource.data.continue-on-error: true 配置

因为在没有加上这个配置之前, 每次初始化都会执行一遍配置的SQL脚本内的SQL语句. 如果在第一次启动并建表成功后再次重启就会因项目在启动时执行SQL脚本并出现表已存在的错误导致项目启动失败 添加该属性之后, 则会忽略错误, 让项目初始化成功! 这样, 也符合我们想要在项目初始化的时候自动执行SQL脚本的思想


三. 其他工具介绍

Flyway : 数据库版本控制管理工具

如果想要对mysql 进行更加细致的管理(版本管理), 可以通过整合 Flyway 来完成数据库部署和增量升级

  • Flayway是一款数据库版本控制管理工具,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里;不仅支持Command Line和java api ,也支持Build构建工具和Spring boot,也可以在分布式环境下能够安全可靠安全地升级数据库,同时也支持失败恢复。
  • Flyway最核心的就是用于记录所有版本演化和状态的MetaData表,Flyway首次启动会创建默认名为SCHEMA_VERSION的元素局表。 表中保存了版本,描述,要执行的sql脚本等;
  • 具体介绍和使用方式可参照以下博客 博客一 博客二

LiquiBase: 数据库重构和迁移的开源工具

LiquiBase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通过执行schema类型的文件来达到迁移。

  • 支持几乎所有主流的数据库,如MySQL, PostgreSQL, Oracle, Sql Server, DB2等;
  • 支持多开发者的协作维护;
  • 日志文件支持多种格式,如XML, YAML, JSON, SQL等;
  • 支持多种运行方式,如命令行、Spring集成、Maven插件、Gradle插件等。

具体介绍和使用方式可参照下面博客 博客一 博客二

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringBoot 实现配置SQL脚本自动执行
    • 一. 背景
    • 二. 使用方式
    • 三. 其他工具介绍
      • Flyway : 数据库版本控制管理工具
      • LiquiBase: 数据库重构和迁移的开源工具
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档