1

申し訳ありませんが、この質問はばかげているように思えますが、1 時間検索を試みましたが、何も見つかりませんでした。したがって、私が言うとき、複数のデータベース(MSSQL、Oracle、MySQLなど)にliquibaseを使用しています:

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

タイプ「boolean」が各データベースの適切なタイプに変換されるかどうかはどうすればわかりますか? また、データ型のマッピングに関するドキュメントはありますか? 外部キーである列をもう 1 つ追加したい場合、どの型を使用すればよいですか?

4

3 に答える 3

3

この質問(および回答) をチェックして、liquibase が提供する利用可能な型を確認してください。

その質問に対する私の回答には、db 固有の型への変換を行う関連する liquibase クラスへのリンクがあります。

「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 に答える