有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 1 楼答案

    这是一个通常被称为“数据库迁移”的功能;它被烘焙到一些开发框架中(例如Ruby on Rails),但在Spring MVC中没有

    最简单的方法是使用tool integrated into your build and deploy scripts-Flyway是流行的

    其原理是:将数据库更改放入脚本中,并使用一个命名约定来指示它们的执行顺序,然后在尝试更新的环境中运行这些脚本。每个数据库都知道最后运行的迁移脚本是哪一个,所以您可以从中断的地方重新开始

    例如:

    filename: 201912130980-create-table-users.sql
    
    create table users (
    id int not null, 
    name string not null,
    age int not null);
    

    一旦你运行它,它将为你的用户创建一个新表

    filename: 201912130981-add-title-to-users.sql
    
    alter table users add title varchar null;
    

    这会向表中添加一个额外的列

    如果您按顺序运行这两个,它们将从头开始创建数据库。如果您已经在测试中运行了“create”脚本,但还没有运行“alter”脚本,那么下次在测试中运行迁移时,它将知道不要重新运行create脚本,而是使用alter脚本

    在一篇评论中,您说不允许在生产中执行表更改——我想您的意思是,这需要一些人工过程(例如,询问DBA)。在本例中,您遇到了一点问题,因为“迁移”过程需要维护数据库发生的最后一次更改,这是由工具保证的。人类往往会犯错。。。Flyway是通过migration history tables.

    最好的选择是与ops/dba团队合作,看看是否可以使用Flyway直接部署到生产环境。如果这太难,你可以创建一个“pre-prod”数据库,并将其用作生产的镜像;将迁移应用于该环境,然后将迁移发送给生产所有者。你可以通过Jenkins或任何你正在使用的工具来实现自动化

  2. # 2 楼答案

    您可以通过使用liquibase编程实现这一点

    你可以参考这里liquibase example