我有两个数据库,一个在DB2上,一个在ORACLE上。我通过generateChangeLog命令生成了更改日志文件。它产生了正确的xml文件,但仅限于Oracle数据库。我在oracle数据库上调用了这个命令,结果我得到了像NUMBER(*,0)这样在DB2上无效的列数据类型。如何在liquibase中使用统一数据类型生成更改日志?
liquibase中是否存在某些数据类型列表?让我们说所有数据库都是versitale ??
答案 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)
根据我的经验,第一个列表缺少INTEGER
和DECIMAL
,这些列表也可以毫无问题地使用(至少对于Oracle和Postgres - 没有DB2来测试它)。