2016-08-22 18 views
0

私はliquibaseでDBスキーマを作成するglassfishアプリケーションを持っています。同じアプリケーションをSpring Bootに移行しました。私はDBスキーマを削除しませんでした。私は、Springアプリケーションをデプロイし、LiquiBaseをスクリプトを実行すると、テーブルのいずれかを作成するためのチェンジセットを実行するとき、私はLiquibaseスクリプトが失敗する

java.sql.SQLSyntaxErrorException: ORA-00955: name is already used by an existing object

を取得します。

liquibaseスクリプトに変更がなく、データベースの変更ログのロックが正常に取得されたことを指定する必要があります。

すべてのテーブル作成手順をスキップしてはいけませんか?私は同じDBに同じアプリケーションを接続します。これまでにこのような状況に遭遇しましたか?

UPDATE:これは、changelogファイルに保存されているMD5サムに関連している可能性がありますか?したがって、新しいアプリケーションによって計算されたmd5は、古いアプリケーションによって計算されたmd5と一致せず、スクリプトがトリガーされて明白な例外が発生しますか?

感謝

答えて

1

私はあなたがチェックサム差を有するとは思わない - 別のエラーメッセージが発生します。私が考えているのは、DATABASECHANGELOGテーブルの変更履歴がLiquibaseによって報告されているものとは違っているということです。

変更セットは、チェンジセットID、作成者、およびパスの3つの要素で識別されます。 Liquibaseがチェンジログからチェンジセットを特定のデータベースにデプロイするかどうかを決定するときに、DATABASECHANGELOGテーブルを調べ、その情報を取得し、チェンジログファイル内の情報と比較して一致するものをデプロイしようとしません。この場合、パスの違いを検出して変更を再デプロイしようとします。

+0

ありがとうございます@SteveDonie、それは私の問題でした。 liquibaseバージョンをアップグレードすると、changelogパスが若干異なる方法でビルドされるようになりました。したがって、変更セットが適用されます。解決策は、.xmlファイルにlogFileName属性を指定することでした。 – TheRock3t

+0

うれしい私は助けることができます。これが正解であると思われる場合は、ここで正しい答えを「同意してください」と答えてください。 – SteveDonie

関連する問題