【问题标题】:Liquibase "modifyDataType" tag always makes the column nullableLiquibase“modifyDataType”标签总是使列可以为空
【发布时间】:2016-06-22 05:58:37
【问题描述】:

当我这样做时-

<modifyDataType 
    tableName="EMCostUnit" 
    columnName="GUID" 
    newDataType="VARCHAR(50)"/>

在 liquibase 中,它总是重置可为空的约束。是否可以添加一些参数使其不会删除约束,因为现在在每个modifyDataType 之后,我需要额外的changeSet 来添加回非空约束。

【问题讨论】:

  • 它总是重置约束”你在说哪些约束?你能显示相应的&lt;createTable&gt; 语句吗?您将哪个 DBMS 与 Liquibase 一起使用?

标签: sql liquibase alter


【解决方案1】:

根据您遇到的问题 - 您必须使用 MySQL DBMS。

如果您指的是NOT NULL约束,则可以将其添加为newDataType的一部分-

<modifyDataType 
    tableName="EMCostUnit" 
    columnName="GUID" 
    newDataType="VARCHAR(50) NOT NULL"/>

生成的 SQL 将是:(在 MySQL 上检查)

ALTER TABLE EMCostUnit MODIFY GUID VARCHAR(50) NOT NULL;

【讨论】:

  • 这个变通方法对我不起作用,令人惊讶的是,最终以VARCHAR(50) DEFAULT NULL 代替。不过,只需使用 &lt;addNotNullConstraint tableName="..." columnName="..." columnDataType="DATETIME(6)" /&gt; 就可以了。
  • 我想在尝试找到这个答案之前尝试在newDataType 中传递NOT NULL 和谷歌它。这就像一个魅力!谢谢。
猜你喜欢
  • 2017-10-02
  • 2011-12-05
  • 2021-12-27
  • 2022-12-10
  • 1970-01-01
  • 2017-01-18
  • 1970-01-01
  • 2022-06-15
  • 2015-10-04
相关资源
最近更新 更多