# トラブルシューティング
レシピの設計ステージにおいては、エラーはつきものです。これまでに観察された、データベースに関連したより一般的なエラーを、リストにまとめることにしました。より詳細な情報については、トラブルシューティングのセクションもご覧ください。問題が解決しないか、該当するエラーが見つからない場合は、カスタマーサポートにお問い合わせいただければ、喜んでお手伝いいたします。
# レシピの設計時のエラー
# タイムアウト
Workato では、実行に時間がかかり過ぎる場合に、ジョブとアクションのタイムアウトを採用しています。データベースを使用する際は、クエリーとストアドプロシージャの応答に時間がかかり過ぎる場合があるため、タイムアウトが発生することがよくあります。この問題が発生した場合は、以下の解決策を実行することを考慮してください。
# アクションのタイムアウト (1つの特定のステップのタイムアウト)
- さらに返される行の数を制限する
- データベースにインデックスを導入する
- カスタム SQL クエリーを最適化する (不要な結合を排除する)
# ジョブのタイムアウト (1つのレシピの実行全体のタイムアウト)
- レシピを分割し、レシピファンクションを使用してワークフローを結合する
- レシピを呼び出す際に非同期呼び出しを使用する
- 不要なアクションを排除する
# 既存のデータベースに接続できない
接続の試行時にデータベース接続でエラーが返される場合、以下のようないくつかの考えられる理由があります。
- オンプレミスエージェントが非アクティブであり (オンプレミスエージェントを使用している場合)、再起動する必要がある。
- データベースの資格情報が変更されている。データベース管理者までお問い合わせください。
- データベースサーバーが、Workato または OPA がインストールされたサーバーからのネットワーク要求を受け入れない。Workato または OPA に対してアクセスを許可するようネットワークアクセス制御を設定してください。
# ロジックエラー
# 無限ループ
無限ループは、Workato においてレシピ内のアクションがさらにもう一度そのレシピをトリガーする場合に発生します。これはデータベースに限ったことではありません。無限ループを検出して解決するいくつかの方法については、こちらをご覧ください。 テーブル内の新規行でトリガーされると同時に、同じテーブルに行を挿入するレシピを作成する場合 (既存のデータに対するデータエンリッチメントやデータ変換を実行する場合など)、無限ループの発生を防止するための以下のようないくつかの方法があります。
- 同じ列が Workato によって処理されているかどうかを示す列をテーブルに作成する (詳細は無限ループについてのドキュメントを参照)
- 未処理の Raw データと変換済みのデータに対して別個のテーブルを作成する
# 同じレコードの複数のコピー
挿入アクションの使用時に、ジョブの実行でエラーが表示されたものの Insert row (行の挿入) アクションのステップが完了した場合、ジョブの再実行の際に行が再挿入されます。これにより、同じレコードの複数のコピーが挿入されることになる場合があります。まず既存のレコードを検索してから、見つかった場合には既存のレコードを更新し、そうでない場合は新規レコードを作成するアップサートアクションを使用することを検討してください。さまざまなユースケースと、それらを使用できる状況について、ベストプラクティスをご確認ください。
# 値の欠落と無効な値
Oracle では、新しいデータをテーブルに挿入する前にその検証を行い、CONSTRAINTS
を使用してデータの整合性を確保できます。データの制約は、テーブルの作成または変更時に Oracle 自体で定義でき、データの整合性を確保するために使用できます。レシピの設計時に、これらの制約に気付いていない場合があります。たとえば、UNIQUE 制約を持つ列は、実際のジョブが実行されるまで確定することはできません。これらの制約に違反している場合、レシピの実行時にエラーが表示されます。以下のスクリーンショットは、CHECK
制約を持つ項目に対して入力が行われていない場合に表示されるジョブエラーを示しています。このエラーメッセージでは、CHECK 制約と、データベース内で検索できる制約名 (この場合 ROOT.SYS_C008445
) が強調表示されます。
値が抜けていることの考えられる理由と、その解決策を以下に示します。
- プライマリキーの列が自動増分しない。この列を、挿入が行われるたびに自動増分する ID 列に変更してください。
- 列に
unique
制約があり、重複した値が拒否されている。新規に挿入する代わりに、アップサートアクションを使用してレコードを更新することを検討してください。 - レシピの実行時に入力されたデータピルが
NULL
の値を返し、これがNOT NULL
制約を持つ列に挿入されたときに、エラーがスローされた。詳細についてはこちらをクリックしてください。NULL
の値に対する論理チェックを追加し、必要に応じてデフォルト値を渡すことを検討してください。これは、Workato の formula モードを使用して実行できます。
Last updated: 2023/8/31 1:07:14