Liquibase数据类型映射文档

时间:2013-06-24 23:50:44

标签: database grails types liquibase

对不起,这个问题似乎很愚蠢,但我试过1小时搜索并没有找到任何结果。 所以我说liquibase用于多个数据库(例如MSSQL,Oracle和MySQL),当我说:

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

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

3 个答案:

答案 0 :(得分:3)

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

在我answer的问题中,有一个链接到相关的liquibase类,它们转换为db特定类型。

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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|