2011-03-24 81 views
6

当我尝试在postgresql 中创建数据类型为“TIMESTAMP WITHOUT TIME ZONE”的列时,它始终在数据库中创建为“TIMESTAMP WITH TIME ZONE”,那么是否有针对此问题的解决方法或解决方案?无法在PostgreSQL中创建类型为“TIMESTAMP WITHOUT 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

+2

请记住,Liquibase正在将XML标记解释为PostgreSQL SQL命令。为了确定执行了什么SQL,使用updateSQL选项运行Liquibase以查看正在生成的实际SQL是什么。 – Kuberchaun 2011-03-24 14:10:43

+3

你不能在Liquibase中修复这个bug吗?这就是真正的问题所在,Liquibase创建了错误的SQL。 – 2011-03-24 18:34:21

回答

1

您可以使用SQL <标签>创建如果liquibase正在生成错误的SQL你你想要的确切SQL。

+0

请问该怎么办? – 2011-03-25 12:16:48

+1

@ sword101我认为这是你需要看看http://www.liquibase.org/manual/custom_sql。 – Kuberchaun 2011-03-25 14:57:31

+0

@ StarShip3000是的,我忘了绕过sql标签的尖括号,所以它没有显示。对不起,关于 – 2011-03-25 21:01:10

12

而不是使用标签和XML完全切换到SQL的,你可以使用它是在整个变更有效的标签修改结果生成的SQL:

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

谢谢!它效果很好。 一个提示:modifySql元素进入changeSet元素内部,并在整个changeSet中工作。但是,仅当我将modifySql元素放在changeSet的末尾时才有效。 目前的链接是http://www.liquibase.org/documentation/modify_sql.html – Humber 2013-09-19 19:49:42

相关问题