The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
Liquibase 是一个用于关系数据库的迁移管理工具。它可以对数据库中的模式和数据变化进行版本控制,类似于 Git 或 SVN 用于源代码的方式。多亏了他们的 Maven 插件,Liquibase 可以作为构建自动化场景的一部分来使用。
假设您正在使用MySQL(PostgreSQL或任何其他数据库配置都非常相似)。
将liquibase-maven-plugin
添加到您的pom.xml
中(在Maven Central获取其最新版本)。
为了检查它是否正常工作,请运行mvn liquibase:help
。
我建议您将数据库凭据保存在settings.xml
和它们各自的配置文件中,例如:
运行Maven时,不要忘记打开其中一个配置文件。例如:mvn -Pproduction
。
我假设你已经有一个带有模式(表,触发器,视图等)和一些数据的数据库。你应该对其进行“逆向工程”,并为Liquibase创建一个初始的模式文件。换句话说,我们应该告诉Liquibase我们目前所处的位置,以便它从这一点开始应用更改。
Maven插件不支持此功能,所以你需要直接运行Liquibase。但是,这并不难。首先,运行mvn liquibase:help
以下载所有工件。然后,用你的实际凭据替换占位符。
Liquibase将分析您当前的数据库模式,并将其自己的模式复制到 src/main/liquibase/2014/000-initial-schema.xml
中。
现在,创建XML主更改集并将其保存到src/main/liquibase/master.xml
。
这是Liquibase的入口点。它从这个文件开始,并加载所有其他可在src/main/liquibase/2014
找到的变更集。它们应该是.xml
或.sql
格式的。我建议您主要使用XML,因为它更易于维护且工作更快。
让我们创建一个简单的更改集,将一个新列添加到现有表中:
我们将此文件保存在 src/main/liquibase/2014/002-add-user-address.xml
中。在大型项目中,您可以按照它们所产生的工单的名称来命名文件。例如,045-3432.xml
,意味着来自工单#3432的更改集编号45。
重要的是在文件名前面加上这个数字前缀,以便正确排序它们。我们希望按照它们的正确时间顺序应用更改。
就是这样。我们准备运行 mvn liquibase:update -Pproduction
,我们的生产数据库将会更新——一个新的列将被添加到 user
表中。
此外,还可以看看 MySQL Maven 插件如何帮助您自动化测试与数据库连接的类。
Translated by ChatGPT gpt-3.5-turbo/36 on 2023-11-17 at 12:25