Migration Errors¶
移行中、移行の概要は、移行の進捗状況が表示されます。エラーが発生した場合、概要にはエラーに関する情報が表示されます。移行の概要もログファイルに書き込まれます。ログファイルのデフォルトの場所は次のとおりです。
Linuxの場合:
$HOME/.enterprisedb/migration-toolkit/logsWindowsでは、ログファイルは次の場所に保存されます。
%HOMEDRIVE%%HOMEPATH%/.enterprisedb/migration-toolkit/logs
MigrationToolkitの -logdir <log_path> オプションを使用して、代替ログファイルディレクトリを指定できます。
接続エラー¶
MigrationToolkitは、 toolkit.propertiesファイル<building_toolkit.properties_file>`の情報を使用して、ソースデータベースとターゲットデータベースに接続します。MigrationToolkitの使用時に発生する接続エラーのほとんどは、 ``toolkit.properties` ファイルで指定された情報に関連しています。次のセクションを使用して、一般的な接続エラーを特定し、それらを解決する方法を学習します。
無効なユーザー名/パスワード¶
MigrationToolkitを使用してオラクルデータベースから移行を実行しようとすると、次のエラーが表示されます。
MTK-11009: Error Connecting Database "Oracle"
DB-1017: java.sql.SQLException: ORA-01017: invalid username/password;
logon denied
The user name or password specified in the toolkit.properties file is
not valid to use to connect to the Oracle source database.
このエラーを解決するには、 SRC_DB_USER プロパティと SRC_DB_PASSWORD プロパティで移行を実行するのに十分な権限を持つ有効なユーザの名前とパスワードを指定して、 toolkit.properties file を編集します。
接続が拒否されました:致命的:パスワード¶
私は移行ツールキットでの移行を実行しようとすると*、私は次のエラーを取得します:*
MTK-11009: Error Connecting Database "EDB Postgres EDB Postgres Advanced Server"
DB-28P01: com.edb.util.PSQLException: FATAL: password authentication
failed for user "name"
toolkit.properties ファイルで指定されたユーザ名前またはパスワードは、Postgresデータベースへの接続に使用するのに無効です。
このエラーを解決するには、 TARGET_DB_USER および TARGET_DB_PASSWORD プロパティで移行を実行するのに十分な権限を持つ有効なユーザの名前とパスワードを指定して、 toolkit.properties ファイルを編集します。
例外:ORA-28000:アカウントはロックされています¶
MigrationToolkitを使用してオラクルデータベースから移行を実行しようとすると、次のエラーメッセージ。
MTK-11009: Error Connecting Database "Oracle"
DB-28000: java.sql.SQLException: ORA-28000: the account is locked
The Oracle account associated with the user name specified in the
toolkit.properties file is locked.
このエラーを解決するには、オラクルサーバーでユーザアカウントのロックを解除するか、 SRC_DB_USER パラメーターと SRC_DB_PASSWORD パラメーターで移行を実行するための十分な権限を持つ有効なユーザの名前とパスワードを指定して toolkit.properties ファイルを編集します。
例外:oracle.jdbc。ドライバ.OracleDriver¶
私は移行ツールキットでの移行を実行しようとすると、移行が失敗し、私はエラーメッセージます:
MTK-11009: Error Connecting Database "Oracle"
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
MigrationToolkitを使用する前に、移行元のデータベースに適切なJDBCドライバをダウンロードしてインストールする必要があります。完全な手順については、 ソース固有のドライバーのインストール を参照してください。
I/O例外:ネットワークアダプターは接続を確立できませんでした¶
私は移行ツールキットでの移行を実行しようとすると*、私は次のエラーを取得します:*
MTK-11009: Error Connecting Database "Oracle"
DB-17002: java.sql.SQLException: Io exception: The
Network Adapter could not establish the connection
toolkit.properties ファイルで指定されたソースデータベースの*JDBCURL* に無効な接続プロパティが含まれています。
このエラーを解決するには、 toolkit.propertiesファイル<building_toolkit.properties_file>`を編集して、 ``SRC_DB_URL` プロパティでソースデータベースの有効な接続情報を指定します。 SRC_DB_URL の値はデータベース固有であることにノートしてください。ソースデータベースタイプの詳細については、目次を参照してください。
例外:「ターゲット」データベースに指定されたURLは無効です¶
私は移行ツールキットでの移行を実行しようとすると*、私は次のエラーを取得します:*
MTK-10045: The URL specified for the "target" database is invalid.
Check the connectivity credentials.
toolkit.propertiesファイルで指定されたターゲットデータベース(EDBPostgresAdvancedServer)のJDBCURLに無効な接続プロパティが含まれています。
このエラーを解決するには、toolkit.propertiesファイルを編集して、 TARGET_DB_URL プロパティでターゲットデータベースの有効な接続情報を指定します。EDBPostgresAdvancedServerのJDBCURLの形成については、 EDBPostgresAdvancedServerURL の定義を参照してください。
移行エラー¶
MigrationToolkitがターゲットおよびソースデータベースサーバーに正常に接続した後、次のエラーが発生する場合があります。
エラー:予想される最後の列の後の追加データ¶
テーブルをオンラインで移行すると、エラーメッセージ:
MTK-17001: Error Loading Data into Table: table_name
DB-22P04: com.edb.util.PSQLException: ERROR: extra data after last
expected column
Where: COPY table_name, line 5: "50|HR|LOS|ANGELES"
このエラーは、 table_name の列のデータにデリミタ文字が含まれている場合に発生します。このエラーを修正するには、デリミタ文字をテーブルの内容にない文字に変更します。
注釈
この例では、最後の列への挿入を意図したテキスト LOS|ANGELES にパイプ文字(|)が発生し、 -copyDelimiter '|' オプションを使用してMigrationToolkitが実行され、エラーが発生します。
テーブルへのデータ読み込みエラー:TABLE_NAME¶
データのみの移行を実行すると、次のエラーが表示されます:
MTK-17001: Error Loading Data into Table: TABLE_NAME
DB-42P01: com.edb.util.PSQLException: ERROR: relation
"schema.\ table_name" does not exist
*I also get the error:*
Trying to reload table: TABLE_NAME through bulk inserts with a batch
size of 100
MTK-17001: Error Loading Data into Table: TABLE_NAME
DB-42P01: com.edb.util.PSQLException: ERROR: relation
"schema.\ table_name" does not exist
データを移行する前に、ターゲットデータベースのデータを受信するテーブルを作成する必要があります。(TABLE_NAME という名前の)テーブルがターゲットデータベースに存在することを確認します。必要に応じてテーブルを作成し、データ移行を再試行します。
制約CONS_NAME_FKの作成エラー¶
インデックスとコンストレインを含むテーブル移行を実行すると、次のエラーメッセージ:
MTK-15001: Error Creating Constraint EMP_DEPT_FK
DB-42P01: com.edb.util.PSQLException: ERROR: relation "hr.departments"
does not exist
Creating Constraint: EMP_JOB_FK
MTK-15001: Error Creating Constraint EMP_JOB_FK
DB-42P01: com.edb.util.PSQLException: ERROR: relation "hr.jobs" does not exist
Creating Constraint: EMP_MANAGER_FK
Schema HR imported with errors.
One or more schema objects could not be imported during the migration
process. Please review the migration output for more details.
Migration logs have been saved to
/home/user/.enterprisedb/migration-toolkit/logs
******************** Migration Summary ********************
Tables: 1 out of 1
Constraints: 4 out of 6
Total objects: 7
Successful count: 5
Failed count: 2
Invalid count: 0
List of failed objects
======================
Constraints
--------------------
1. HR.EMPLOYEES.EMP_DEPT_FK
2. HR.EMPLOYEES.EMP_JOB_FK
移行するテーブルには、ターゲットデータベースに存在しないテーブル制約外部キー制約が含まれています。MigrationToolkitは、外部キー制約を省略してテーブルを作成します。
MigrationToolkitコマンドに -skipFKConst オプションを含めることにより、エラーメッセージの生成を回避できます。
テーブルへのデータ読み込みエラー¶
テーブル定義は既に移行済みです。データをテーブルに移行しようとすると、エラーが発生します:
MTK-17001: Error Loading Data into Table: DEPARTMENTS
DB-22P04: com.edb.util.PSQLException: ERROR: extra data after last
expected column
Where: COPY departments, line 1: "10 Administration 200 1700"
Trying to reload table: DEPARTMENTS through bulk inserts with a batch
size of 100
MTK-17000: Batch entry 0 INSERT INTO hr.DEPARTMENTS VALUES (10,
'Administration', 200, 1700); was aborted. Call getNextException to see
the cause.
DB-42601: java.sql.BatchUpdateException: Batch entry 0 INSERT INTO
hr.DEPARTMENTS VALUES (10, 'Administration', 200, 1700); was aborted.
Call getNextException to see the cause., Skipping Batch
MTK-17000:ERROR: INSERT has more expressions than target columns
Position: 48
[DEPARTMENTS] Table Data Load Summary: Total Time(s): 0.037 Total Rows:0
Data Load Summary: Total Time (sec): 0.168 Total Rows: 0 Total Size(MB):0.0
Schema HR imported with errors.
(ターゲットデータベースの)テーブル定義が、移行されたデータとマッチしません。ターゲットまたはソーステーブルを変更した場合は、テーブル定義とデータに互換性があることを確認してください。
エラー:タイプに対して値が長すぎます¶
テーブル定義は既に移行済みです。データをテーブルに移行しようとすると、次のエラーが表示されます。
MTK-17001: Error Loading Data into Table: DEPARTMENTS
DB-22001: com.edb.util.PSQLException: ERROR: value too long for type
character(1)
Where: COPY departments, line 1, column location_id: "1700"
Trying to reload table: DEPARTMENTS through bulk inserts with a batch
size of 100
MTK-17000: Batch entry 0 INSERT INTO hr.DEPARTMENTS VALUES (10,
'Administration', 200, 1700); was aborted. Call getNextException to see
the cause.
DB-22001: java.sql.BatchUpdateException: Batch entry 0 INSERT INTO
hr.DEPARTMENTS VALUES (10, 'Administration', 200, 1700); was aborted.
Call getNextException to see the cause., Skipping Batch
MTK-17000:ERROR: value too long for type character(1)
ターゲット・データベース内の列には、移行されたデータを受信するために十分なラージではありません。この問題は、移行後にテーブル定義が変更された場合に発生する可能性があります。列名前(この例では、location_id)は Where: で始まる行で識別されます。
Where:COPY departments, line 1, column location_id:/"1700/"
問題を修正するには、列サイズを調整し、移行を再試行し移行。
エラー:スレッドの例外:OutOfMemoryError¶
MySQLデータベースから移行すると、次のエラーが発生します:
Loading Table: big_range ...
Exception in thread "dataload_job_1" java.lang.OutOfMemoryError: Java
heap space
at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1370)
at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2369)
at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:451)
at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2076)
at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1451)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1787)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3206)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:1232)
at com.edb.dbhandler.mysql.Data.getTableData(Data.java:90)
at com.edb.DataLoader.loadDataInFastMode(DataLoader.java:594)
at com.edb.DataLoader.run(DataLoader.java:186)
at java.lang.Thread.run(Thread.java:722)
デフォルトでは、MySQLJDBCドライバは、1つのネットワークラウンドトリップで、テーブルにあるすべての行をクライアントアプリケーション(MigrationToolkit)にフェッチします。この動作は、ラージテーブルで使用可能なメモリを簡単に超える可能性があります。
問題を修正するには、移行をリトライするときにコマンドライン引数として -fetchSize 1 を指定します。