2013-03-14 7 views
5

これらの列のデータを持つデータベースに対して、NUMBER(10,0)からNUMBER(30,0)にdataTypeを変更しようとしています。私はこれにliquibaseを使わなければならない。 Liquibaseを使用してOracleのデータを含む列のデータ型を変更します。

<modifyDataType tableName="tableName" columnName="columnsName" newDataType="NUMBER(38,0)"/> 

しかし、私は次のエラーを取得する列のデータを持つテーブルに対して

Caused by: java.sql.SQLException: ORA-01440: column to be modified must be empty to decrease precision or scale 

を、列は移行されません私は、次の使用しています。この方法では、データを含む列を新しい型に移行できませんか?

+0

この問題を解決しましたか? データ移行をどのように管理しましたか? – Noam

答えて

0

列に、疑わしいデータ型があることを確認します。あなたの移行は正常に機能しますIFF元のデータ型はNUMBER(N、0)ですN < 38.

1

このliquibaseは、このエラーをスローするOracleエンジンです。 Liquibaseは実際にはmodifyDataTypeをalter table文に変換します。だから、オラクルエンジンに行き、あなたの文は次のようになります。今modifyDataTypeは任意のエラーを返します

ALTER TABLE tableName MODIFTY columnsName NUMBER(38,0); 

生成されたSQLステートメントの結果として返されます。

関連する問題