2011-06-27 8 views
2

dbをOracleからmysqlに移行するためにddlutilsを使用しています。スキーマの移行は私の目的のために機能しますが、データの挿入には行がないために失敗します。次のログファイルの抜粋で説明しています。DdlUtils:挿入を延期する

[ddlToDatabase] About to execute SQL: INSERT INTO `RECORDSTATUS` (`NAME_ID`, RECORDSTATUS_ID`, `NAME`, `SORTVALUE`) VALUES (?, ?, ?, ?) 
[ddlToDatabase] Inserted bean RECORDSTATUS:RECORDSTATUS_ID=0 
... 
[ddlToDatabase] Defering insertion of row NAME:LANGUAGE_ID=0;NAME_ID=5941 because it is waiting for: 
[ddlToDatabase] RECORDSTATUS:RECORDSTATUS_ID=0 

データベースにRECORDSTATUS_ID = 0という行があります。誰かが同じ問題に直面しましたか?誰かがアイデアを持っています、問題は何ですか?

答えて

0
​​

は次のようになります。

INSERT INTO `RECORDSTATUS` (`NAME_ID`, `RECORDSTATUS_ID`, `NAME`, `SORTVALUE`) VALUES 
1

MySQLからのDerbyDBへの移行時に、私は同様の問題がありました。実際の問題はDDLUtilsがプライマリキーを対象とする外部キーのみを処理するということでした。

したがって、独自の非主キーフィールドを含むMASTERテーブルがあり、その一意の非主キーフィールドを参照する(外部キー)を持つDETAILSテーブルを持つ場合、DDLUtilsはDETAILSレコードをMASTERにリンクできず、したがって挿入できませんDETAILレコード。

これは、DDLUtilsバージョン1.0の状況です。

私はコードにいくつかの簡単な(そしてmayby汚れた)修正を行い、この問題を解決するようです。変更されたバージョンは、ここでダウンロードできます(ソースを含む):DllUtils-1.0_mod_with_src.jar。自分の責任でそれを使うことができます。

関連する問題