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

Cannot create column with type “TIMESTAMP WITHOUT TIME ZONE” in PostgreSQL

当我试图在postgresql中创建一个数据类型为"TIMESTAMP WITHOUT TIME ZONE"的列时
它总是在数据库中创建为"TIMESTAMP WITH TIME ZONE",那么是否有针对此问题的解决方法或解决方案?

1
2
3
4
            <COLUMN name="date_added" TYPE="TIMESTAMP WITHOUT TIME ZONE">
            <constraints NULLABLE="false" />
            </column>
 </addColumn>

顺便说一句,这个问题是关于jira的:
http://liquibase.jira.com/browse/CORE-877


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

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

1
2
3
<modifySql dbms="postgresql">
    <REPLACE REPLACE="WITH" WITH="WITHOUT"/>
</modifySql>


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


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


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

1
2
3
4
5
- modifySql:
    dbms: postgresql
    REPLACE:
      REPLACE: UNSIGNED
      WITH: DEFAULT 0