开始使用 SQL 脚本
第1步创建一个sql文件夹
在解压的Liquibase
的文件夹中 ,创建一个 sql
文件夹。在这个文件夹中你将放置 Liquibase
将跟踪、版本和部署的SQL
脚本。
第2步建立一个Change Log
这是一次性步骤,用于配置更改日志以指向将包含 SQL
脚本的 sql
文件夹。在解压的*.zip
或*.tar.gz
的 Liquibase
的目录中创建并保存文件名为 myChangeLog.xml
的文件 。myChangeLog.xml
的内容应如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<includeAll path="/sql"/>
</databaseChangeLog>
第3步在SQL文件中新增一个SQL脚本
使用教程设置中的 liquibase.properties
文件以及新创建的myChangeLog.xml
,我们现在已准备好开始向 sql
文件夹添加SQL
脚本。Liquibase
将在文件夹中按字母数字顺序排列脚本。使用以下内容创建 001_create_person_table.sql
并将其保存在 sql
文件夹中:
create table PERSON (
ID int not null,
FNAME varchar(100) not null
);
第4步 部署你的第一个修改
现在,我们已准备好部署我们的第一个脚本!打开终端,如果在 UNIX
系统上则运行 ./liquibase update
或 如果在 Windows 上则运行liquibase.bat update
。
第5步 检查你的数据库
您将看到您的数据库现在包含一个名为PERSON
的表。要将作为本教程一部分的 H2
数据库写入内容,请打开一个终端,导航到您提取的 Liquibase``*.zip
或 *.tar.gz
的文件夹,并运行 java -jar h2-1.4.199.jar
注意:输入您下载的 h2*.jar
的特定版本!输入JDBC URL
、用户名和密码,从 liquibase.properties
文件输入您根据教程设置创建的属性文件。您会注意到还创建了另外两个表:databasechangeloglock
和databasechangeloglock
。databasechangelog
表包含针对数据库运行的所有更改的列表。databasechangeloglock
表用于确保两台计算机不会同时尝试修改数据库。
使用 Liquibase 函数入门
本教程使用Liquibase
函数。更改将在 XML
中定义,而不是使用 SQL
。Liquibase
将根据定义的changeSet(s)
生成 SQL
,并将该 SQL
部署到目标数据库。所有迁移都在更改日志中显式跟踪和排序。
第一步创建一个Changelog文件
database changelog文件是列出所有数据库更改的位置。创建一个名为 myChangeLog.xml
的文件,其中包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
</databaseChangeLog>
第2步 添加一个Change Set
每个changeSet
都由id
属性和author
属性进行唯一标识。这两个标记以及更改日志文件的名称和包唯一地标识了更改。如果只需要指定一个id
,则很容易意外重用它们,尤其是在处理多个开发人员和代码分支时。包括author
属性可最大程度地减少重复的可能性。
将每个changeSet
视为要应用于数据库的原子更改。通常最好在changeSet
中只包含一个更改,但如果插入多个行时,这些行一起有作为单个事务添加的意义,则允许进行更多更改。Liquibase
将尝试将每个changeSet
运行为单个事务,但对于某些命令,许多数据库将静默地提交和回滚事务(创建表、删除表等)。
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<changeSet id="1" author="bob">
<createTable tableName="department">
<column name="id" type="int">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="name" type="varchar(50)">
<constraints nullable="false"/>
</column>
<column name="active" type="boolean" defaultValueBoolean="true"/>
</createTable>
</changeSet>
</databaseChangeLog>
第3步 运行change Set
如果是在UNIX
操作系统,可以使用./liquibase update
命令来执行myChangeLog.xml
;如果是在Windows
操作系统上,可以使用liquibase.bat update
来运行myChangeLog.xml
检查你的数据库
您将看到您的数据库现在包含一个名为PERSON
的表。要将作为本教程一部分的 H2
数据库入内容,请打开一个终端,导航到您提取的 Liquibase``*.zip
或 *.tar.gz
的文件夹,并运行 java -jar h2-1.4.199.jar
注意:输入您下载的 h2*.jar
的特定版本!输入JDBC URL
、用户名和密码,从 liquibase.properties
文件输入您根据教程设置创建的属性文件。您会注意到还创建了另外两个表:databasechangeloglock
和databasechangeloglock
。databasechangelog
表包含针对数据库运行的所有更改的列表。databasechangeloglock
表用于确保两台计算机不会同时尝试修改数据库。
标准模板
<?xml version="1.0" encoding="utf-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<property name="now" value="now()" dbms="mysql"/>
<changeSet id="" author="修改者">
<tagDatabase tag="数据库tag"/>
</changeSet>
<changeSet id="id唯一" author="修改者" runOnChange="false">
<preConditions onFail="MARK_RAN">
<not>
<columnExists tableName="" columnName=""/>
</not>
</preConditions>
<comment>此次修改的备注</comment>
<sql>
此次修改的sql语句
</sql>
<rollback>
失败回滚的语句
</rollback>
</changeSet>
</databaseChangeLog>
changeSetid 为需求的日期加上 tag版本 和jiar版本
命令
在对应模块下执行
mvn install -Pupdatedb -Ddb.schema=数据库名称 -Dusername=root -Dpassword=数据库密码