gpt4 book ai didi

mysql - Liquibase 上下文中的感叹号

转载 作者:行者123 更新时间:2023-11-29 12:59:00 24 4
gpt4 key购买 nike

我正在努力实现以下目标:

  1. 我们有一个 mysql 数据库,出于性能原因,我们不想在数据库级别使用外键,而是在大多数表中使用 MyISAM 引擎。

  2. 我们希望能够使用外键创建数据库的“骨架”,以便能够通过对数据库进行逆向工程来生成 propel 或 jooq 文件。

我正在尝试使用 context="fk"来处理我只需要第二点的事情。这是我的changelog.xml:

<?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>

当我运行时

liquibase --contexts=fk updateSQL

然后我看到(如预期的那样)表 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 时,“Engine MyISAM”和“Engine InnoDB”都不会附加到 sql 中:

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 beta 版本中可用(您必须从源代码中自行构建)。文档已经比代码稍微领先了一点。

关于mysql - Liquibase 上下文中的感叹号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23607326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com