2

Oracle から mysql にデータベースを移行するために、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 があります。誰かが同じ問題に直面しましたか?誰かがアイデアを持っていますか、問題は何ですか?

4

2 に答える 2

1

MySql から DerbyDB に移行するときにも同様の問題がありました。私の場合、実際の問題は、DDLUtils が主キーを対象とする外部キーのみを処理することでした。

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

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

コードにいくつかの簡単な(そしておそらく汚い)変更を加えたところ、この問題は解決したようです。修正版はここからダウンロードできます (ソースを含む): DllUtils-1.0_mod_with_src.jar。ご自身の責任でご利用ください。

宜しくお願いします カリ・スラッカ

于 2011-08-05T08:49:06.867 に答える
0
INSERT INTO `RECORDSTATUS` (`NAME_ID`, RECORDSTATUS_ID`, `NAME`, `SORTVALUE`) VALUES 

する必要があります:

INSERT INTO `RECORDSTATUS` (`NAME_ID`, `RECORDSTATUS_ID`, `NAME`, `SORTVALUE`) VALUES 
于 2011-06-27T12:14:36.593 に答える