- 印刷
- PDF
エラーメッセージ集
- 印刷
- PDF
TROCCOで表示される、エラーメッセージの原因および対処法を説明するページです。
本記事で対応するエラーメッセージ
本ページでは、以下ログ内に表示されるエラーメッセージについて紹介しています。
- プレビューエラーログ
- 実行エラーログ
- 実行ログ
転送先BigQuery
BigQueryとの接続時に発生しうるエラー
org.embulk.exec.PartialExecutionException: java.net.SocketException: Connection or outbound has closed
考えられる原因
TROCCOが転送先BigQueryへ接続するときにまれに発生する、ネットワーク瞬断によるエラーです。
大半のケースにおいて、ジョブを再実行することでエラーを解消できます。
対処
転送設定もしくはワークフロー定義に、リトライ設定を追加することでエラーを回避できます。
- 転送設定の場合:
- 転送設定STEP2のジョブ設定タブにて、最大リトライ回数を1以上に設定します。
- ワークフロー定義の場合:
- ジョブ実行設定のリトライ回数を1以上に設定します。
JSONでネストされたカラムをBigQueryへ投入するときのエラー
Field <カラム名> is type RECORD but has no schema.
考えられる原因
TROCCOにてJSON型として定義しているカラムを、RECORD型として転送しようとした場合に発生するエラーです。
具体的には、下記の状況においてエラーが発生します。
- 転送設定STEP2のデータ設定タブのカラム定義にて、データ型としてjsonと設定しているカラムを
- 転送設定STEP2の出力オプションタブのカラム設定にて、データ型としてRECORDと設定して転送しようとする
対処
あらかじめテンプレート扱いとするテーブルをBigQuery上に作成することで対処可能です。
- BigQuery側にて、転送先予定のデータセット配下に、今回転送したいテーブルと同一のスキーマを持つテーブルを作成します。
- TROCCOの、転送設定STEP2の出力オプションタブのスキーマ情報をテンプレートとして参照するテーブルにて、前手順で作成したテーブル名を入力します。
転送先kintone
転送先テーブル側で対応していないデータ型のカラムを転送した場合のエラー
Caused by: com.kintone.client.exception.KintoneApiRuntimeException: HTTP error status 400, {"code":"CB_IJ01","id":"<ID>","message":"不正なJSON文字列です。"}
考えられる原因
TROCCOで定義しているカラムのデータ型を、転送先kintoneのテーブルに定義しているデータ型が対応していない場合などに発生するエラーです。
なお、上記エラーメッセージに含まれる"code":"CB_IJ01"
は、転送先テーブルに対して値(TROCCOで形成されるJSON)が正しくないときに出力されます。
対処
転送設定STEP2の出力オプションタブのカラム設定にて、別のデータ型を設定してください。
転送元BigQuery
Google Spreadsheetsを外部テーブルとして参照しているときのエラー
bigquery job failed: Access Denied: BigQuery BigQuery: Permission denied while getting Drive credential.
考えられる原因
データ取得元のBigQueryテーブルが、外部テーブルとしてGoogle Spreadsheetsを参照しているときに起きるエラーです。
現在、TROCCOの転送元BigQueryでは、外部テーブルとしてGoogle Spreadsheetsを参照しているテーブルの転送に対応していません。
対処
BigQuery上で、外部テーブルを参照していないテーブルを作成し、そのテーブルをデータ取得元テーブルとして設定してください。
転送元MySQL
MySQLへの接続が確立できないときのエラー
Error: java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
考えられる原因
MySQLとの接続が確立できないときに発生するエラーです。
具体的には、下記のようなケースが考えられます。
- MySQL側のストレージ容量がFULLになっていて、再起動を繰り返している。
- タイムアウト設定値内の時間でMySQL側からレスポンスがない。
- 本現象は、MySQLに対してバージョンアップ等の変更が加わった場合に発生することがあります。
対処
- まず、MySQL側の起動状況を確認してください。
- MySQLの起動状況に問題がない場合、以下のいずれかを行ってください。
- TROCCOの転送設定STEP2の入力オプションタブにて、ソケットタイムアウトの値を伸ばす。
- MySQLのnet_read_timeoutの値を伸ばす。
SSH/SSM接続を確立できないときのエラー
SSH接続時にエラーが発生しました。設定をご確認ください。Net::SSH::Proxy::ConnectError: Failed to connect to your bastion host. Please check your SSM configuration.
考えられる原因
MySQLやSSH接続・SSM接続の環境に起因して発生するエラーです。
対処
- sshdの同時接続数や、ログ(
/var/log/secure
)などを確認すると、問題となった箇所が見つかる可能性があります。
sshdの同時接続数上限を引き上げた上で、ジョブを再実行してください。 - 一時的な環境の問題に起因している可能性もあるため、時間をおいて再実行してください。
それでも頻発する場合は、TROCCOの転送設定STEP2の「ジョブ設定」にてリトライ設定を追加してください。
転送元Redshift
転送元データが1000行を超えるときのエラー
Fetch size 10000 exceeds the limit of 1000 for a single node configuration. Reduce the client fetch/cache size or upgrade to a multi node installation
考えられる原因
Redshiftにおける、fetchサイズが1000行より多いと取得できないという制約によって、TROCCOでの取得データが1000行を超えるとエラーが発生します。
fetchサイズを1000行以下に設定する必要があります。
対処
TROCCOの転送設定STEP2の入力オプションタブにて、カーソルが一度に処理するレコード数を1000以下に変更してください。
転送元ファイルストレージ系(S3、GCS等)
本エラーメッセージが表示されうるコネクタについて、ファイル・ストレージ系コネクタを参照ください。
数値型・日時型のカラムに対応しない文字が入っているときのエラー
org.embulk.spi.DataException: Invalid record at <行数>
Caused by: org.embulk.standards.CsvParserPlugin$CsvRecordValidateException: java.lang.NumberFormatException: For input string: ""
考えられる原因
数値型・日時型として推論されたカラム内に、対応外の文字(Nullや空文字など)が含まれている場合に発生するエラーです。
TROCCOではEmbulkの仕様により、数値型および日時型のカラムに対応外の文字が含まれると、エラーが発生します。
より具体的には、下記のケースにおいて発生します。
- TROCCOの転送設定STEP2遷移時に実行される自動データ設定において、カラムのデータ型が数値型または日時型として推論される
- データ型が数値型・日時型として推論されたカラムに、対応外の文字が含まれる
対処
2通りの対処が考えられます。
文字列型に変換して転送
- 転送設定STEP2のデータ設定タブのカラム定義にて、該当のカラムのデータ型をstringに設定します。
- 変更をプレビューをクリックします。
対応外の文字を任意の数字に置換して転送
※転送先によっては、出力オプションタブのカラム設定ができないため、以下の対処は取れないことがあります。
- 転送設定STEP2のデータ設定タブの文字列 正規表現置換にて、前述の対象外の文字を任意の数字に変換します。
- 詳しくは、文字列正規表現置換についてを参照ください。
- 転送設定STEP2の出力オプションタブのカラム設定にて、該当カラムのデータ型を数値型(INTEGER型など)に設定します。
転送元Salesforce
Salesforce側の設定不足によるエラー
Setup::Error::ConfigError: (INVALID_LOGIN) INVALID_LOGIN: Invalid username, password, security token; or user locked out.
考えられる原因
TROCCOからSalesforceにログインできないときに発生するエラーです。
具体的には、下記のようなケースが考えられます。
- Salesforce側でIP制限をかけており、TROCCOのIPアドレスが許可されていない
- SalesforceのログインURLに制限をかけている
- 接続情報に紐づけたSalesforceアカウントに対し、APIを利用する権限が付与されていない
対処
- セキュリティグループやファイアウォール等で許可頂く必要があるIPアドレスを参照し、IPアドレスを許可してください。
- Salesforce側で何かしらの制限をかけていないか、設定を確認してください。
数値型カラムに数値以外が入っているときのエラー
cannot cast String to long: "-"NumberFormatException: For input string: "-"
考えられる原因
数値型カラムに数字以外の文字が含まれているときに発生するエラーです。
上記のエラーメッセージでは、記号(ハイフン)が数値型のカラムに入っていることによってエラーが発生しています。
対処
2通りの対処が考えられます。
文字列型に変換して転送
- 転送設定STEP2のデータ設定タブのカラム定義にて、該当のカラムのデータ型をstringに設定します。
- 変更をプレビューをクリックします。
対応外の文字を任意の数字に置換して転送
※転送先によっては、出力オプションタブのカラム設定ができないため、以下の対処は取れないことがあります。
- 転送設定STEP2のデータ設定タブの文字列 正規表現置換にて、前述の対象外の文字を任意の数字に変換します。
- 詳しくは、文字列正規表現置換についてを参照ください。
- 転送設定STEP2の出力オプションタブのカラム設定にて、該当カラムのデータ型を数値型(INTEGER型など)に設定します。
転送元kintone
トークンに権限が付与されていないときのエラー
アプリID取得エラー
予期せぬエラーが発生しました。TROCCOのサポートチームまでお問い合わせください。
考えられる原因
転送設定STEP1でアプリIDを取得できないときに表示されます。
接続情報に使用しているトークンに「レコード閲覧権限」「レコード追加権限」のいずれもが付与されていないときに発生するエラーです。
対処
接続情報に使用しているトークンに、kintone側で「レコード閲覧権限」「レコード追加権限」を付与してください。
権限の詳細については公式ドキュメントを確認してください。
転送元Google Spreadsheets
スプレッドシートに存在しないシート名を指定したときのエラー
Error: (ClientError) badRequest: Unable to parse range: <sheet name>
考えられる原因
転送設定STEP1で設定したシート名と、シートのURLに指定したスプレッドシート上のシート名が違っている場合に発生するエラーです。
対処
シートのURLに指定したファイルを開き、以下を確認してください。
- シート名が存在しているか
- シート名に意図しないスペースなど誤字がないか
転送元Facebook Ad Insights
Facebook APIでの処理打ち切りによるエラー
async was aborted because the number of retries exceeded the limit
考えられる原因
Facebook APIに対するリクエストに時間がかかりすぎた場合(約15分以上)に、Facebook API側で自動的に処理を打ち切ることによって発生するエラーです。
本エラーは取得データが多すぎることによって発生する場合があります。
対処
TROCCOの転送設定STEP1にて、データ取得期間の範囲を狭めてください。
転送元X Ads (旧Twitter Ads)
トークンにAPI利用権限が付与されていないときのエラー
{"errors":[{"code":"UNAUTHORIZED_CLIENT_APPLICATION","message":"The client application making this request does not have access to Twitter Ads API"}],"request":{"params":{}}}
考えられる原因
以下の原因が考えられます。
- Twitter Ads API利用申請が承認されていない
- API利用申請が承認される前に生成したトークンを接続情報に登録している
対処
Twitter Ads APIの利用申請が承認されているか確認してください。
承認される前にトークンを生成した場合は、以下の順でTwitter Ads API利用申請を行い、トークンを生成してください。
- API利用を申請する
- Ads API利用を申請する
- トークンを生成する
転送元LINE広告
データ取得期間の日付フォーマットに誤りがあるときのエラー
code: 400. {"errors":[{"reason":"INVALID_VALUE","message":"the value is invalid","property":"since"}]}
考えられる原因
転送設定STEP1のダウンロード種別でパフォーマンスレポートを選択したときに指定する、データ取得期間の日付フォーマットが誤っているときに発生するエラーです。
対処
データ取得期間の日付フォーマットを%Y-%m-%d
(YYYY-MM-DD)の形式で指定してください。(例:2023-02-01)
カスタム変数を使用している場合は、カスタム変数の日付フォーマットも%Y-%m-%d
の形式で指定してください。
転送元App Store Connect API
接続情報の秘密鍵に誤りがあるときのエラー
Error: org.embulk.util.retryhelper.RetryGiveupException: org.apache.http.HttpException: Request is not successful, code=401, body={[0x2b][0x2c]"errors": [{[0x39][0x3a][0x3b]"status": "401",[0x4c][0x4d][0x4e]"code": "NOT_AUTHORIZED",[0x68][0x69][0x6a]"title": "Authentication credentials are missing or invalid.
考えられる原因
転送設定に使用している接続情報に登録した秘密鍵の入力時に、---BEGIN *---
と---END *---
の箇所を削除しているなど、秘密鍵の文字列をすべて入力していないときに発生するエラーです。
対処
発行した秘密鍵の文字列をすべてコピーし、接続情報の秘密鍵の欄にペーストして保存してください。
接続情報のIssuer IDに必要な権限が付与されていないときのエラー
Error: org.embulk.util.retryhelper.RetryGiveupException: org.apache.http.HttpException: Request is not successful, code=403, body={[0x2b] "errors" : [ {[0x3c] "id" : "xxxxxx",[0x6f] "status" : "403",[0x85] "code" : "FORBIDDEN_ERROR",[0xa5] "title" : "This request is forbidden for security reasons",[0xe5] "detail" : "The API key in use does not allow this request"[0x125] } ][0x12b]}
考えられる原因
転送設定に使用している接続情報に登録したIssuer IDに、以下の必要な権限が付与されていないときに発生するエラーです。
対処
接続情報に登録したIssuer IDに対し、App Store Connect API側で「Reporting and Analytics」のFinanceの権限を付与してください。
転送設定
プレビュー時・ジョブ実行時に取得データが存在しないときのエラー
Error: No input records to preview
考えられる原因
エラーが表示されるタイミングで原因が異なります。
転送設定STEP2のプレビュー時にエラーが表示される場合
転送設定STEP1で設定した転送元から1件もデータが取得できなかった場合に、プレビュー表示がエラーになります。
転送ジョブを実行したときに該当エラーが表示される場合
スキーマ変更検知をオンにしている状態で転送ジョブを実行し、転送元から1件もデータが取得できなかった場合に、ジョブがエラーになります。
具体的には、以下のケースが考えられます。
- 転送方法に差分転送を選択しており、前回のジョブ実行後に増分レコードが生成されなかった。
- 指定したデータ取得期間に内にレコードが生成されなかった。
対処
転送設定STEP2のプレビュー時にエラーが表示される場合
- データ取得期間が設定できる転送元の場合
- データ取得期間の範囲をデータが存在する期間まで広げてください。
- 自動データ設定を実行もしくはSTEP2で変更をプレビューをクリックし、プレビューが表示されるか確認してください。
- レコードの絞り込みを設定できる転送元の場合
- クエリなどでレコードを絞り込んでいる場合、絞り込みを解除してください。
- 自動データ設定を実行もしくはSTEP2で変更をプレビューをクリックし、プレビューが表示されるか確認してください。
- ファイル・ストレージ系の転送元の場合
- 指定したパスにファイルが存在することを確認してください。
- パスの指定方法が間違っていないことを確認してください。
転送ジョブを実行したときに該当エラーが表示される場合
前述の原因によってエラーが表示されている場合、それは想定通りの挙動です。
レコードが生成されてから、あらためてジョブを実行してください。
OutOfMemory
が発生した場合のエラー
OutOfMemoryErrorが発生した場合の対処方法を参照ください。
新規追加カラムにデフォルト値がない場合のエラー
columns: Column src '<new_column>' is not found in inputschema. Column '<new_column>' does not have "type" and "default" Suppressed: NullPointerException
考えられる原因
転送設定STEP2のカラム定義でカラムを追加し、変更をプレビューした際に、以下の条件に合致したときに発生するエラーです。
- 元カラムが「新規追加」であること
- デフォルト値が未入力(空欄)であること
カラム定義にてカラムを手動追加した場合は、デフォルト値の欄に任意の値を入力する必要があります。
対処
新規追加カラムにデフォルト値を入力し、変更をプレビューをクリックして変更を反映することで、エラーは解消します。
転送先にデフォルト値を格納したくない場合、以下の方法で空文字を格納できます。
- カラム定義で、デフォルト値に、任意の値を入力する
- 例:999
- 文字列 正規表現置換で、デフォルト値に入力した値を空文字に置換する
- 例:
- 正規表現パターン:999
- 置換させる文字列:何も入力しない(空欄)
- 例:
上記方法の結果、空文字が格納されます。
NULLを格納したい場合は、プログラミングETLのご利用を検討ください。
プログラミングETLに問題があるときのエラー
Error: org.embulk.exec.ExecutionInterruptedException: java.lang.Exception: Internal API Error
考えられる原因
プログラミングETLに記述しているコードに誤りがあったり、処理データ量が多すぎてプログラミングETLに割り当てられているメモリを使い切っているときなどに発生するエラーです。
対処
コードを確認のうえ、処理データ量が少なくなるようにコードを修正してください。
転送元・転送先Googleが提供するサービス
Googleが提供するサービスの接続情報に誤りがあるときのエラー
org.embulk.exec.PartialExecutionException: java.lang.RuntimeException: java.lang.IllegalArgumentException:
Caused by: java.lang.IllegalArgumentException: expected primitive class, but got: class com.google.api.client.json.GenericJson
考えられる原因
Googleが提供するサービス(BigQuery、Google Spreadsheets、Google Driveなど)の接続情報を、JSONキーを使用して作成したとき、JSONキーの内容に誤りがある場合に起きるエラーです。
本エラーは、接続情報の作成時に、JSONキーを不完全な形で入力することで発生することが多いです。
対処
- 作成したJSONキーの値を任意のテキストエディタで開き、テキストを全選択した上でコピーします。
- 接続情報編集画面のJSONキー入力項目にペーストして、接続情報を保存します。