Liquibase不同的数据类型H2 / Oracle

时间:2018-04-04 12:10:37

标签: oracle h2 liquibase

所以我在dbchangelog中有以下变更集:

<changeSet id="04_04_2018" author="codeit">
    <createTable tableName="BSP_TABELLE">
        <column name="name" type="varchar(255)"/>
        <column name="datum" type="datetime"/>
        <column name="richtigfalsch" type="boolean"/>
        <column name="blub" type="blob"/>
        <column name="club" type="clob"/>
        <column name="ganzzahl" type="int"/>
        <column name="grosseganzzahl" type="bigint"/>
        <column name="gleitkommazahl" type="decimal(17,5)"/>
    </createTable>
</changeSet>

在H2,我确实得到了我的期望:

CREATE TABLE BSP_TABELLE
(
  NAME           VARCHAR(255),
  DATUM          TIMESTAMP,
  RICHTIGFALSCH  BOOLEAN,
  BLUB           BLOB,
  CLUB           CLOB,
  GANZZAHL       INTEGER,
  GROSSEGANZZAHL BIGINT,
  GLEITKOMMAZAHL DECIMAL(17, 5)
)

但在Oracle中,我确实得到了:

CREATE TABLE BSP_TABELLE
(
  NAME           VARCHAR2(255),
  DATUM          TIMESTAMP(6),
  RICHTIGFALSCH  NUMBER(1),
  BLUB           BLOB,
  CLUB           CLOB,
  GANZZAHL       NUMBER,
  GROSSEGANZZAHL NUMBER,
  GLEITKOMMAZAHL NUMBER(17, 5)
)

我期待:

CREATE TABLE BSP_TABELLE
(
  NAME           VARCHAR2(255),
  DATUM          TIMESTAMP(6),
  RICHTIGFALSCH  NUMBER(1),
  BLUB           BLOB,
  CLUB           CLOB,
  GANZZAHL       NUMBER(10),
  GROSSEGANZZAHL NUMBER(19,0),
  GLEITKOMMAZAHL NUMBER(17, 5)
)

如何在不修改H2中的数据类型的情况下实现DataType for Oracle?

我目前正在运行时从java实现加载更改日志,如:

Connection connection = openDatabaseConnection();
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection));
String[] validatedLiquibaseChangelogs = validateLiquibaseChangelogs();
for (String validatedChangelog : validatedLiquibaseChangelogs) {
    Liquibase liquibase = new liquibase.Liquibase(validatedChangelog, new FileSystemResourceAccessor(), database);
    //Updaten der Datenbank
    liquibase.update(new Contexts(), new LabelExpression());
} 

0 个答案:

没有答案