テーブルの移行スクリプトを作成しました。私はそれをテストし、複製されたデータベース (db2) で実行しましたが、成功しました。sqldeveloper も問題を報告しませんでした。ただし、このスクリプトには挿入ステートメントの構文エラーが含まれており、失敗するはずでした。データベースの db1 インスタンスで (正しく) 失敗しました。これらのデータベースは同一のコピーですが、異なる場所の異なるハードウェアに格納されています。このエラーは、値 xyz を abc に置き換えているため、NULL のままにする必要がある挿入ステートメントのフィールドとして特定しました。(基本的に改名)
以下の移行スクリプトの抜粋:
INSERT INTO EXAMPLE_A
SELECT
B_VAL_EXAMPLE_LRB,
NULL, --B_NEW_VAL1_YN,
NULL, --B_NEW_VAL2_YN,
NULL, --Location for B_OTHER_ABC_SPECIFY
B_PROGRAM_ID,
--After
A_VAL_EXAMPLE_LRB,
NULL, --A_NEW_VAL1_YN,
NULL, --A_NEW_VAL2_YN,
NULL, --Location for A_OTHER_ABC_SPECIFY
A_PROGRAM_ID
FROM EXAMPLE_A_BAK;
上記の例は正常に機能し、両方の db インスタンスで機能します。以下の例は、テーブルにデータがないデータベース (db2) では機能しますが、データのあるデータベース (db1) では機能しません。これは私の問題でしょうか? エラーのあるスクリプトがエラーを生成せずにデータベースのインスタンスに実行された理由を説明して理解する必要があります。
INSERT INTO EXAMPLE_A
SELECT
B_VAL_EXAMPLE_LRB,
NULL, --B_NEW_VAL1_YN,
NULL, --B_NEW_VAL2_YN,
B_OTHER_ABC_SPECIFY, --Location for B_OTHER_ABC_SPECIFY
B_PROGRAM_ID,
--After
A_VAL_EXAMPLE_LRB,
NULL, --A_NEW_VAL1_YN,
NULL, --A_NEW_VAL2_YN,
A_OTHER_ABC_SPECIFY, --Location for A_OTHER_ABC_SPECIFY
A_PROGRAM_ID
FROM EXAMPLE_A_BAK;
sqldeveloper のバージョンが異なる可能性はありますか?または、クエリを解析するオラクルの問題でさえ説明になる可能性がありますか?
たぶん私はこれをあまりにも長く見ていて、皮肉なことに何かを見落としているかもしれませんが、どんな助けも素晴らしいでしょう. 同じデータベースの 2 つのインスタンスの唯一の違いは、移行を試みる前に db1 のテーブルにデータが既に存在することです。