无法在PostgreSQL中创建类型为“TIMESTAMP WITHOUT TIME ZONE”的列

时间:2011-03-24 12:49:08

标签: postgresql liquibase

当我尝试在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

5 个答案:

答案 0 :(得分:12)

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

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

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

答案 1 :(得分:1)

您可以使用&lt; sql&gt;如果liquibase为您生成错误的SQL,则使用tag创建您想要的确切SQL。

答案 2 :(得分:1)

阅读本页http://www.liquibase.org/documentation/sql_format.html。如果您将SQL格式与Liquibase一起使用,只需手动输入所需的SQL。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

此查询经过很长时间后,liquibase团队已解决了此问题,现在您可以添加以下列类型:

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