【问题标题】:Cannot create column with type "TIMESTAMP WITHOUT TIME ZONE" in PostgreSQL无法在 PostgreSQL 中创建类型为“TIMESTAMP WITHOUT TIME ZONE”的列
【发布时间】:2011-07-22 02:53:30
【问题描述】:

当我尝试在 postgresql 中创建数据类型为“TIMESTAMP WITHOUT TIME ZONE”的列时 它总是在数据库中创建为 "TIMESTAMP WITH TIME ZONE" ,那么这个问题有什么变通方法或解决方案吗?

<addColumn tableName="myTable">
            <column name="date_added" type="TIMESTAMP WITHOUT TIME ZONE">
            <constraints nullable="false" />
            </column>
 </addColumn>

顺便说一句,这个问题在 jira 上: http://liquibase.jira.com/browse/CORE-877

【问题讨论】:

  • 请记住,Liquibase 将 XML 标记解释为 PostgreSQL SQL 命令。要确定正在执行什么 SQL,请使用 updateSQL 选项运行 Liquibase,以查看正在生成的实际 SQL 是什么。
  • 你不能修复 Liquibase 中的这个错误吗?这就是真正的问题所在,Liquibase 创建了错误的 SQL。

标签: postgresql liquibase


【解决方案1】:

在查询了很久之后,liquibase 团队已经纠正了这个问题,现在您可以添加以下列类型:

<column name="created_at" type="TIMESTAMP WITHOUT TIME ZONE">
    <constraints nullable="true"/>
</column>

【讨论】:

    【解决方案2】:

    除了@magomarcelo,您还可以将modifysql 编写为 YAML。 下面的例子忽略了 postgresql 中的 unsigned:

    - modifySql:
        dbms: postgresql
        replace:
          replace: unsigned
          with: default 0
    

    【讨论】:

      【解决方案3】:

      您可以使用在整个变更集中有效的标签来修改生成的 SQL,而不是使用标签并完全从 XML 切换到 sql:http://www.liquibase.org/documentation/modify_sql.html

      例如,在你的情况下,你会有这样的:

      <modifySql dbms="postgresql">
          <replace replace="WITH" with="WITHOUT"/>
      </modifySql>
      

      【讨论】:

      • 谢谢!它工作得很好。一个提示: modifySql 元素进入 changeSet 元素内部,并在整个 changeSet 中起作用。但是,仅当我将 modifySql 元素放置在 changeSet 的末尾时才有效。当前链接是liquibase.org/documentation/modify_sql.html
      【解决方案4】:

      阅读此页面http://www.liquibase.org/documentation/sql_format.html。如果您在 Liquibase 中使用 SQL 格式,只需手动输入所需的 SQL 即可。

      【讨论】:

        【解决方案5】:

        如果 liquibase 为您生成错误的 SQL,您可以使用 标记来创建您想要的确切 SQL。

        【讨论】:

        • @sword101 我想这是你需要看的liquibase.org/manual/custom_sql
        • @StarShip3000 是的,我忘记转义 sql 标签周围的尖括号,所以它没有显示。对此感到抱歉
        猜你喜欢
        • 2012-04-04
        • 2021-11-12
        • 2013-10-26
        • 2011-03-14
        • 1970-01-01
        • 2022-09-25
        • 1970-01-01
        • 2023-01-10
        • 2013-11-25
        相关资源
        最近更新 更多