【问题标题】:Liquibase Data Type Mapping documentationLiquibase 数据类型映射文档
【发布时间】:2013-06-24 23:50:44
【问题描述】:

对不起,这个问题似乎很愚蠢,但我尝试了 1 小时的搜索,但没有找到任何东西。 因此,当我说:

addColumn(tableName: "ABC_TEST") {
  column(name: "IS_ACTIVE", type: "boolean")
} 

我如何知道“布尔”类型是否会被转换为每个数据库的正确类型? 我可以找到任何有关数据类型映射的文档吗?如果我想再添加一列是外键,我应该使用哪种类型?

【问题讨论】:

  • 你说的多数据库,Grails(2.0及以上)内置了multiple datasources的能力,你试过吗?
  • @dmahapatro 您提到的是数据源配置,这不是问题。我的问题主要是关于迁移脚本。我希望一个迁移脚本适用于多个数据库。

标签: database grails types liquibase


【解决方案1】:

结帐this question(和答案)以查看 liquibase 提供的可用类型。

在我的answer 中,有一个链接指向相关的 liquibase 类,这些类可以转换为 db 特定类型。

当您创建具有“liquibase 类型”的主键的表时,liquibase 会将其转换为特定于 db 的类型。 然后你的外键应该只使用相同的类型,liquibase 也会翻译它。

例如查看课程BigIntType。 使用 liquibase,您只需使用“liquibase 类型”:BIGINT。 在 Oracle DB 上,它将转换为 ("NUMBER", 38,0)。 在 MSSQL 上,它将转换为 ("BIGINT")

【讨论】:

    【解决方案2】:

    Liquibase 有一个数据库方言的概念,很像 Hibernate 的。它使用这些来知道如何生成正确的 DDL 语句来添加/更改/删除列、外键等。当它连接到数据库时,它使用 JDBC 元数据来确定您正在使用的数据库类型,并使用它来确定正确的方言。

    【讨论】:

    • 感谢您的回答。我有这个大致的想法。我的问题是,如果现在我想添加一个作为外键的新列,我应该使用哪种类型?在我们的项目中,我看到人们对 mssql 使用 'bigint' 或对 oracle 使用 'number'。 liquibase 中是否有任何通用类型,例如“id”,以便 liquibase 将其转换为每个数据库的特定方言,因此我只需将类型设置为“id”,不需要担心每个数据库的特定类型数据库?
    【解决方案3】:

    Here 是一个将 Liquibase 数据类型映射到 SQL Server 和 Oracle 的表。

    ||Liquibase data type||SQL Server data type||Oracle data type||
    |bigint|bigint|number(38,0)|
    |blob|varbinary(max)|blob|
    |boolean|bit|number(1)|
    |char|char|char|
    |clob|nvarchar(max)|clob|
    |currency|money|number(15,2)|
    |datetime|smalldatetime or datetime2|timestamp|
    |date|date or smalldatetime (version <= 2005)|date|
    |decimal|decimal|decimal|
    |double|float|float(24)|
    |float|float|float|
    |int|int|number(10)|
    |mediumint|mediumint|mediumint|
    |nchar|nchar|nchar|
    |nvarchar|nvarchar|nvarchar2|
    |number|numeric|number|
    |smallint|smallint|number(5)|
    |time|time or datetime (version <= 2005)|date|
    |timestamp|datetime|timestamp|
    |tinyint|tinyint|number(3)|
    |uuid|uniqueidentifier|raw(16)|
    |varchar|varchar|varchar2| 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 2013-11-30
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多