所以我在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());
}