【问题标题】:Liquibase column data types from generateChangeLog来自 generateChangeLog 的 Liquibase 列数据类型
【发布时间】:2015-05-18 12:36:38
【问题描述】:

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

liquibase 中是否存在一些数据类型列表?哪个对所有数据库都通用??

【问题讨论】:

    标签: oracle db2 liquibase


    【解决方案1】:

    将现有的 DB 模式逆向工程为 Liquibase XML 文件总是会创建 DBMS 特定的数据类型。您必须编辑生成的 XML 文件才能使用 JDBC 类型。

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

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

    为了帮助脚本独立于数据库,以下“通用”数据类型将转换为正确的数据库实现:

    • 布尔值
    • 货币
    • UUID
    • CLOB
    • BLOB
    • 日期
    • 日期时间
    • 时间
    • BIGINT

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

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

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

    【讨论】:

    • 那么数值的精度呢?是否可以在此 liquibase 泛型类型中指定精度?
    • @ArturSkrzydło,如手册所述:“如果需要,可以包括精度”,根据我的经验,decimal 工作正常。这包括例如decimal(18,2)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    相关资源
    最近更新 更多