Mysql Liquibase上下文中的感叹号
我正在努力实现以下目标:Mysql Liquibase上下文中的感叹号,mysql,liquibase,myisam,Mysql,Liquibase,Myisam,我正在努力实现以下目标: 我们有一个mysql数据库,不希望在数据库级别使用外键,出于性能原因,我们在大多数表中使用MyISAM引擎 我们希望能够使用外键创建数据库的“骨架”,以便能够通过反向工程数据库生成推进或jooq文件 我试图使用context=“fk”来表示我只需要第二点的内容。以下是我的changelog.xml: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <databaseChangeLog
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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-2.0.xsd">
<changeSet author="gavriel" id="1398956739320-1">
<createTable tableName="A">
<column autoIncrement="true" name="Id" type="INT(10)">
<constraints primaryKey="true"/>
</column>
</createTable>
<modifySql dbms="mysql">
<append value=" Engine MyISAM"/>
</modifySql>
</changeSet>
<changeSet author="gavriel" id="1398956739320-4">
<createTable tableName="B">
<column autoIncrement="true" name="Id" type="INT(10)">
<constraints primaryKey="true"/>
</column>
<column name="AId" type="INT(10)">
<constraints nullable="false"/>
</column>
</createTable>
<modifySql dbms="mysql" context="!fk">
<append value=" Engine MyISAM"/>
</modifySql>
<modifySql dbms="mysql" context="fk">
<append value=" Engine InnoDB"/>
</modifySql>
</changeSet>
</databaseChangeLog>
然后我看到(正如预期的)表B中有“Engine InnoDB”:
CREATE TABLE innovid_studio_jooq.B (Id INT(10) AUTO_INCREMENT NOT NULL, AId INT(10) NOT NULL, CONSTRAINT PK_B PRIMARY KEY (Id)) Engine InnoDB;
但是,当我在没有上下文或任何随机(不存在)上下文的情况下运行liquibase时,sql中既没有“Engine MyISAM”也没有“Engine InnoDB”:
CREATE TABLE innovid_studio_jooq.B (Id INT(10) AUTO_INCREMENT NOT NULL, AId INT(10) NOT NULL, CONSTRAINT PK_B PRIMARY KEY (Id));
为什么??“Engine MyISAM”不应该被追加,因为它的上下文是“!fk”据我所知,上下文的逻辑运算符(即context=“!fk”)仅在3.2测试版(您必须从源代码构建)中可用。文档比代码稍微超前了一点 啊,我明白了。而且,即使“不指定上下文也会运行所有上下文”似乎也是一个新特性……我敢说,您还没有看到公告,Liquibase 3.2已经发布了。
CREATE TABLE innovid_studio_jooq.B (Id INT(10) AUTO_INCREMENT NOT NULL, AId INT(10) NOT NULL, CONSTRAINT PK_B PRIMARY KEY (Id));