1

同じdb-changelogをantで実行し、次にSpringで実行する必要があります。antがchangelogを実行し、春の実行時に何も実行せず、正常に停止することを願っています。Antはdb-changelogを正常に実行してから、スプリング実行しますが、スタックトレースの一部である例外をスローします。

理由:liquibase.exception.JDBCException:SQL CREATE TABLEアクションの実行中にエラーが発生しました(action_id int8 NOT NULL、action_name VARCHAR(255)、version_no int8、reason_required BOOLEAN、comment_required BOOLEAN、step_id int8、CONSTRAINT action_pkey PRIMARY KEY(action_id)):原因SQL CREATE TABLEアクションの実行中にエラーが発生しました(action_id int8 NOT NULL、action_name VARCHAR(255)、version_no int8、reason_required BOOLEAN、comment_required BOOLEAN、step_id int8、CONSTRAINT action_pkey PRIMARY KEY(action_id)):原因:エラー:リレーション"action"は既に存在します; ネストされた例外はorg.springframework.beans.factory.BeanCreationException...です。

どんな助けでも大歓迎です。

よろしく、

4

2 に答える 2

2

変更ログを再度実行しようとしているように聞こえます。changeLog 内の各 changeSet は、ID、作成者、および変更ログのパス/ファイル名の組み合わせによって識別されます。「select * from databasechangelog」を実行すると、使用された値を確認できます。

問題は、変更ログ ファイルを ant や spring とは異なる方法で参照しているため、異なるファイル名の値が生成されている可能性があります。通常、それらをクラスパスに含めたいので、どこでどのように実行しても同じパスになります (「com/example/db.changelog.xml」など)。

于 2009-12-18T14:33:43.523 に答える
0

これと同じ問題が発生し、DATABASECHANGELOGのファイル名列を変更してスプリングリソースパスを参照することで修正できました。私の場合、WEB-INFディレクトリの下でServletContextResourceを使用していました。

update DATABASECHANGELOG set FILENAME = 'WEB-INF/path/to/changelog.xml' where FILENAME = 'changelog.xml'
于 2010-02-01T17:08:49.457 に答える