1

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

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

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

4

3 回答 3

3

查看此问题(和答案)以查看 liquibase 提供的可用类型。

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

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

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

于 2013-06-25T07:24:40.457 回答
1

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

于 2013-06-25T01:14:05.653 回答
0

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

||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| 
于 2015-01-13T15:13:48.930 回答