来自generateChangeLog的Liquibase列数据类型

时间:2015-05-18 12:36:38

标签: oracle db2 liquibase

我有两个数据库,一个在DB2上,一个在ORACLE上。我通过generateChangeLog命令生成了更改日志文件。它产生了正确的xml文件,但仅限于Oracle数据库。我在oracle数据库上调用了这个命令,结果我得到了像NUMBER(*,0)这样在DB2上无效的列数据类型。如何在liquibase中使用统一数据类型生成更改日志?

liquibase中是否存在某些数据类型列表?让我们说所有数据库都是versitale ??

1 个答案:

答案 0 :(得分:3)

将现有数据库模式反向工程为Liquibase XML文件始终会创建特定于DBMS的数据类型。您必须编辑生成的XML文件以使用JDBC类型。

手册中记录了支持的“跨平台”类型:

http://www.liquibase.org/documentation/column.html

  

为了使脚本与数据库无关,以下“通用”数据类型将转换为正确的数据库实现:

     
      
  • BOOLEAN
  •   
  • CURRENCY
  •   
  • UUID
  •   
  • CLOB
  •   
  • BLOB
  •   
  • DATE
  •   
  • DATETIME
  •   
  • TIME
  •   
  • BIGINT
  •   
     

此外,指定java.sql.Types。*类型也将转换为正确的类型。如果需要,可以包括精度。以下是一些例子:

     
      
  • java.sql.Types.TIMESTAMP
  •   
  • java.sql.Types.VARCHAR(255)
  •   

根据我的经验,第一个列表缺少INTEGERDECIMAL,这些列表也可以毫无问题地使用(至少对于Oracle和Postgres - 没有DB2来测试它)。