エラーコードとトラブルシューティング

このドキュメントでは、TiDB の使用中に発生する問題について説明し、解決策を提供します。

エラーコード

TiDB は MySQL のエラー コードと互換性があり、ほとんどの場合、MySQL と同じエラー コードを返します。 MySQL のエラー コードのリストについては、 MySQL 5.7エラー メッセージ リファレンスを参照してください。さらに、TiDB には次のような固有のエラー コードがあります。

注記:

一部のエラー コードは内部エラーを表します。通常、TiDB はエラーをユーザーに返すのではなく処理するため、一部のエラー コードはここにリストされていません。

ここにリストされていないエラー コードが発生した場合は、PingCAP またはコミュニティから支持を得ます受け取ります。

  • エラー番号: 8001

    リクエストによって使用されたメモリが、 TiDBメモリ使用量のしきい値制限を超えています。

    システム変数tidb_mem_quota_queryを構成して、単一の SQL ステートメントのメモリ制限を増やします。

  • エラー番号: 8002

    一貫性を保証するため、コミット競合が発生した場合、 SELECT FOR UPDATEステートメントを含むトランザクションは再試行できません。 TiDB はトランザクションをロールバックし、このエラーを返します。

    アプリケーションはトランザクション全体を安全に再試行できます。

  • エラー番号: 8003

    ADMIN CHECK TABLEコマンドの実行時に行内のデータがインデックスと一致しない場合、TiDB はこのエラーを返します。このエラーは、テーブル内のデータ破損をチェックするときによく見られます。

    支持を得ます PingCAP またはコミュニティから行うことができます。

  • エラー番号: 8004

    1 つのトランザクションが大きすぎます。

    原因と解決策についてはエラー メッセージtransaction too large参照してください。

  • エラー番号: 8005

    完全なエラー メッセージ: ERROR 8005 (HY000): Write Conflict, txnStartTS is stale

    TiDB のトランザクションで書き込み競合が発生します。アプリケーションのロジックを確認し、書き込み操作を再試行してください。

  • エラー番号: 8018

    プラグインをリロードするときに、プラグインが以前にロードされていない場合は、このエラーが返されます。

    プラグインの初期ロードを実行できます。

  • エラー番号: 8019

    再ロードされるプラグインのバージョンは、以前のバージョンとは異なります。したがって、プラグインを再ロードできず、このエラーが返されます。

    プラグインのバージョンが以前のものと同じであることを確認することで、プラグインをリロードできます。

  • エラー番号: 8020

    テーブルがロックされているときに、テーブルに対して書き込み操作を実行すると、このエラーが返されます。

    テーブルのロックを解除し、書き込み操作を再試行します。

  • エラー番号: 8021

    TiKVから読み込むキーが存在しない場合、このエラーが返されます。このエラーは内部で使用され、外部結果は空の読み取りになります。

  • エラー番号: 8022

    トランザクションのコミットが失敗し、ロールバックされました。

    アプリケーションはトランザクション全体を安全に再試行できます。

  • エラー番号: 8023

    トランザクション キャッシュを書き込むときに空の値を設定すると、このエラーが返されます。このエラーは内部で使用および処理され、アプリケーションには返されません。

  • エラー番号: 8024

    無効な取引です。 TiDB が、実行中のトランザクションのトランザクション ID (開始タイムスタンプ) が取得されていないことを検出した場合、つまりこのトランザクションが無効であることを意味し、このエラーが返されます。

    通常、このエラーは発生しません。このエラーが発生した場合は、PingCAP またはコミュニティから支持を得ます

  • エラー番号: 8025

    書き込まれる単一の Key-Value ペアが大きすぎます。 TiDB でサポートされる最大の単一の Key-Value ペアは、デフォルトで 6 MB です。

    ペアがこの制限を超える場合は、 txn-entry-size-limit構成値を適切に調整して制限を緩和する必要があります。

  • エラー番号: 8026

    使用されているインターフェース機能が実装されていません。このエラーは内部でのみ使用され、アプリケーションには返されません。

  • エラー番号: 8027

    テーブル スキーマのバージョンが古いです。 TiDB はスキーマ変更をオンラインで適用します。 TiDBサーバーのテーブル スキーマのバージョンがシステム全体のテーブル スキーマのバージョンより古い場合に SQL ステートメントを実行すると、このエラーが返されます。

    このエラーが発生した場合は、TiDBサーバーと PD Leaderの間のネットワークを確認してください。

  • エラー番号: 8028

    v6.3.0 以降、TiDB にはメタデータロック機能が導入されています。メタデータ ロックが無効になってトランザクションが実行されると、トランザクションはテーブル スキーマの変更を認識できません。したがって、トランザクションがコミットされると、TiDB はトランザクションに関連するテーブル スキーマをチェックします。関連テーブルのスキーマが実行中に変更された場合、トランザクションのコミットはこのエラーで失敗します。現時点では、アプリケーションはトランザクション全体を安全に再試行できます。

    Read Committed 分離レベルではなくメタデータ ロックが有効になっている場合、テーブルで非可逆列タイプの変更が発生した場合 (たとえば、 INTからCHARへの変更は非可逆ですが、 TINYINTからINTへの変更は非可逆です。データの上書きは行われないためです)必須) トランザクションの開始からテーブルに初めてアクセスすると、トランザクションは自動的にロールバックされず、クエリは失敗します。他のステートメントの実行を続行し、トランザクションをロールバックするかコミットするかを決定できます。

  • エラー番号: 8029

    このエラーは、データベース内の数値変換でエラーが発生した場合に発生します。このエラーは内部でのみ使用され、外部アプリケーションでは特定の種類のエラーに変換されます。

  • エラー番号: 8030

    符号なしの正の整数が符号付きの整数に変換されると、最大値を超えて負の整数として表示されます。このエラーは主に警告メッセージで発生します。

  • エラー番号: 8031

    符号なし整数に変換される場合、負の整数は正の整数に変換されます。このエラーは主に警告メッセージで発生します。

  • エラー番号: 8032

    無効なyear形式が使用されています。 year 1、2、または 4 桁のみを受け入れます。

  • エラー番号: 8033

    無効なyear値が使用されています。 yearの有効範囲は (1901, 2155) です。

  • エラー番号: 8037

    week関数で無効なmode形式が使用されています。 mode [0, 7] 内の 1 桁でなければなりません。

  • エラー番号: 8038

    フィールドはデフォルト値を取得できません。このエラーは通常内部で使用され、外部アプリケーションでは特定の種類のエラーに変換されます。

  • エラー番号: 8040

    サポートされていない操作が実行されました。たとえば、ビューまたはシーケンスに対してテーブル ロック操作を実行します。

  • エラー番号: 8047

    システム変数の値はサポートされていません。このエラーは通常、ユーザーがデータベースでサポートされていない変数値を設定した場合にアラーム情報で発生します。

  • エラー番号: 8048

    サポートされていないデータベース分離レベルが設定されています。

    サードパーティのツールまたはフレームワークを使用しているためにコードを変更できない場合は、 tidb_skip_isolation_level_checkを使用してこのチェックをバイパスすることを検討してください。

    set @@tidb_skip_isolation_level_check = 1;
  • エラー番号: 8050

    サポートされていない権限タイプが設定されています。

    解決策についてはTiDB 操作に必要な権限参照してください。

  • エラー番号: 8051

    TiDB がクライアントから送信された Exec 引数リストを解析するときに、不明なデータ型が検出されました。

    このエラーが発生した場合は、クライアントを確認してください。クライアントが正常な場合、PingCAP またはコミュニティから支持を得ます

  • エラー番号: 8052

    クライアントからのデータパケットのシリアル番号が正しくありません。

    このエラーが発生した場合は、クライアントを確認してください。クライアントが正常な場合、PingCAP またはコミュニティから支持を得ます

  • エラー番号: 8055

    現在のスナップショットは古すぎます。データがガベージ コレクションされた可能性があります。この問題を回避するには、値tidb_gc_life_timeを増やすことができます。 TiDB は、長時間実行されるトランザクション用にデータを自動的に予約します。通常、このエラーは発生しません。

    ガベージコレクションの概要ガベージコレクションの構成を参照してください。

  • エラー番号: 8059

    自動ランダム ID が枯渇しているため、割り当てることができません。現時点では、このようなエラーから回復する方法はありません。自動ランダム機能を使用して割り当ての最大数を取得する場合は、bigint を使用することをお勧めします。また、自動ランダム列に手動で値を割り当てることは避けてください。

    自動ランダムを参照してください。

  • エラー番号: 8060

    無効な自動インクリメントオフセットです。 auto_increment_incrementauto_increment_offsetの値を確認してください。

  • エラー番号: 8061

    サポートされていない SQL ヒントです。

    SQL ヒントを確認および変更するには、 オプティマイザーのヒントを参照してください。

  • エラー番号: 8062

    SQL ヒントで無効なトークンが使用されています。 SQL ヒントの予約語と競合します。

    SQL ヒントを確認および変更するには、 オプティマイザーのヒントを参照してください。

  • エラー番号: 8063

    SQLヒントで設定した制限メモリ使用量がシステムの上限を超えています。 SQLヒントの設定は無視されます。

    SQL ヒントを確認および変更するには、 オプティマイザーのヒントを参照してください。

  • エラー番号: 8064

    SQL ヒントの解析に失敗します。

    SQL ヒントを確認および変更するには、 オプティマイザーのヒントを参照してください。

  • エラー番号: 8065

    SQLヒントで無効な整数が使用されています。

    SQL ヒントを確認および変更するには、 オプティマイザーのヒントを参照してください。

  • エラー番号: 8066

    JSON_OBJECTAGG関数の 2 番目のパラメータが無効です。

  • エラー番号: 8101

    プラグインIDの形式が間違っています。

    正しい形式は[name]-[version]で、 nameversion-は許可されません。

  • エラー番号: 8102

    プラグイン定義情報を読み込めません。

    プラグインに関する設定を確認してください。

  • エラー番号: 8103

    プラグイン名が間違っています。

    プラグインの設定を確認してください。

  • エラー番号: 8104

    プラグインのバージョンが一致しません。

    プラグインの設定を確認してください。

  • エラー番号: 8105

    プラグインは繰り返しロードされます。

  • エラー番号: 8106

    プラグインは、名前がプラグイン名で始まらないシステム変数を定義しています。

    変更するにはプラグインの開発者に連絡するか、 支持を得ますまたはコミュニティから連絡してください。

  • エラー番号: 8107

    ロードされたプラグインのバージョンが指定されていないか、指定されたバージョンが低すぎます。

    プラグインの設定を確認してください。

  • エラー番号: 8108

    サポートされていない実行プランのタイプです。このエラーは内部エラーです。

    このエラーが発生した場合は、PingCAP またはコミュニティから支持を得ます

  • エラー番号: 8109

    インデックスを分析すると、指定されたインデックスが見つかりません。

  • エラー番号: 8110

    デカルト積演算は実行できません。

    設定のcross-join trueに設定します。

  • エラー番号: 8111

    EXECUTEステートメントを実行すると、対応するPrepareステートメントが見つかりません。

  • エラー番号: 8112

    EXECUTEステートメントのパラメーターの数はPrepareステートメントと一致しません。

  • エラー番号: 8113

    EXECUTEステートメントに関連するテーブル スキーマは、 Prepareステートメントの実行後に変更されています。

  • エラー番号: 8115

    複数行のステートメントを準備することはサポートされていません。

  • エラー番号: 8116

    DDL ステートメントの準備はサポートされていません。

  • エラー番号: 8120

    トランザクションのstart tsoが取得できません。

    PDサーバーの状態/モニター/ログ、および TiDBサーバーと PDサーバー間のネットワークを確認します。

  • エラー番号: 8121

    権限チェックが失敗します。

    データベースの権限設定を確認してください。

  • エラー番号: 8122

    指定されたワイルドカードを指定しても、対応するテーブル名が見つかりません。

  • エラー番号: 8123

    集計関数を使用した SQL クエリは非集計列を返します。これはonly_full_group_byモードに違反します。

    SQL ステートメントを変更するか、 only_full_group_byモードを無効にしてください。

  • エラー番号: 8129

    TiDB は、キーの長さが 65536 以上の JSON オブジェクトをまだサポートしていません。

  • エラー番号: 8130

    完全なエラー メッセージ: ERROR 8130 (HY000): client has multi-statement capability disabled

    このエラーは、TiDB の以前のバージョンからアップグレードした後に発生する可能性があります。 SQL インジェクション攻撃の影響を軽減するために、TiDB では、デフォルトで複数のクエリが同じCOM_QUERYの呼び出しで実行されないようになっています。

    システム変数tidb_multi_statement_modeを使用して、この動作を制御できます。

  • エラー番号: 8138

    トランザクションは不正な行値を書き込もうとします。詳細については、 データとインデックス間の不一致のトラブルシューティングを参照してください。

  • エラー番号: 8139

    トランザクションは、ハンドルがインデックス内のハンドルと一致しない行を書き込もうとします。詳細については、 データとインデックス間の不一致のトラブルシューティングを参照してください。

  • エラー番号: 8140

    トランザクションは、データがインデックス データと一致しない行を書き込もうとします。詳細については、 データとインデックス間の不一致のトラブルシューティングを参照してください。

  • エラー番号: 8141

    トランザクションのコミット中、キーの存在アサーションは失敗します。詳細については、 データとインデックス間の不一致のトラブルシューティングを参照してください。

  • エラー番号: 8143

    非トランザクション DML ステートメントの実行中にバッチが失敗すると、ステートメントは停止します。詳細については、 非トランザクション DML ステートメントを参照してください。

  • エラー番号: 8147

    トランザクションの正確性を確保するためにtidb_constraint_check_in_place_pessimisticOFFに設定すると、SQL ステートメントの実行中にエラーが発生すると、TiDB がこの8147エラーを返し、現在のトランザクションが中止される可能性があります。エラーの具体的な原因については、エラー メッセージを参照してください。詳細については、 制約を参照してください。

  • エラー番号: 8154

    現在、 LOAD DATA TiDBサーバーからローカルにデータをインポートすることをサポートしていません。 LOCALを指定してクライアントからインポートすることも、S3 または GCS にデータをアップロードしてからインポートすることもできます。 LOAD DATAを参照してください。

  • エラー番号: 8156

    LOAD DATAステートメントのファイル パスを空にすることはできません。インポートする前に正しいパスを設定する必要があります。 LOAD DATAを参照してください。

  • エラー番号: 8158

    指定されたパスは無効です。対処方法については、特定のエラー メッセージを参照してください。 Amazon S3 または GCS のパス設定については、 外部ストレージ サービスの URI 形式を参照してください。

  • エラー番号: 8159

    TiDB は、 LOAD DATAステートメントで指定された S3 または GCS パスにアクセスできません。 S3 または GCS バケットが存在すること、および TiDB がバケットにアクセスできるようにするために正しいアクセス キーとシークレット アクセス キーを使用していることを確認してください。

  • エラー番号: 8160

    LOAD DATAはデータファイルの読み込みに失敗します。対処方法については、特定のエラー メッセージを参照してください。

  • エラー番号: 8162

    LOAD DATAステートメントに誤りがあります。サポートされている機能については、 LOAD DATA参照してください。

  • エラー番号: 8200

    DDL 構文はまだサポートされていません。

    MySQL DDL の互換性を参照してください。

  • エラー番号: 8214

    DDL 操作はadmin cancel操作によって終了します。

  • エラー番号: 8215

    ADMIN REPAIR TABLEは失敗します。

    このエラーが発生した場合は、PingCAP またはコミュニティから支持を得ます

  • エラー番号: 8216

    自動ランダム列の使用法は正しくありません。

    変更するには自動ランダムを参照してください。

  • エラー番号: 8223

    このエラーは、データがインデックスと一致していないことを検出した場合に発生します。

    このエラーが発生した場合は、PingCAP またはコミュニティから支持を得ます

  • エラー番号: 8224

    DDL ジョブが見つかりません。

    restore操作で指定したジョブIDが存在するか確認してください。

  • エラー番号: 8225

    DDL 操作は完了したため、キャンセルできません。

  • エラー番号: 8226

    DDL 操作はほぼ完了しているため、キャンセルできません。

  • エラー番号: 8227

    シーケンスの作成時にサポートされていないオプションが使用されています。

    サポートされているオプションのリストについては、 シーケンスのドキュメントを参照してください。

  • エラー番号: 8228

    シーケンスでsetvalを使用する場合、サポートされていないタイプが指定されています。

    関数の例については、 シーケンスのドキュメントを参照してください。

  • エラー番号: 8229

    トランザクションが生存時間を超えています。

    現在のトランザクションをコミットまたはロールバックし、新しいトランザクションを開始します。

  • エラー番号: 8230

    TiDB は現在、新しく追加された列のデフォルト値としてシーケンスを使用することをサポートしていないため、使用するとこのエラーが報告されます。

  • エラー番号: 8248

    リソース グループはすでに存在します。このエラーは、リソース グループが繰り返し作成されると返されます。

  • エラー番号: 8249

    リソースグループが存在しません。このエラーは、存在しないリソース グループを変更またはバインドすると返されます。 リソースグループを作成するを参照してください。

  • エラー番号: 8250

    完全なエラー メッセージは次のとおりです。

    ERROR 8250 (HY000) : Resource control feature is disabled. Run "SET GLOBAL tidb_enable_resource_control='on'" to enable the feature

    このエラーは、リソース制御機能を使用しようとしたが有効になっていない場合に返されます。グローバル変数tidb_enable_resource_controlをオンにして、リソース制御を有効にすることができます。

  • エラー番号: 8251

    Resource Controlコンポーネントは、 TiDB の起動時に初期化されます。関連する設定はResource Controlのサーバー側のResource Managerから取得されます。このプロセス中にエラーが発生した場合、このエラーが返されます。

  • エラー番号: 8252

    完全なエラー メッセージは次のとおりです。

    ERROR 8252 (HY000) : Exceeded resource group quota limitation

    このエラーは、使用しようとした量がリソース グループの制限を超えた場合に返されます。このエラーは通常、単一トランザクションが大きすぎるか、同時トランザクションが多すぎることが原因で発生します。トランザクション サイズを調整するか、同時クライアントの数を減らす必要があります。

  • エラー番号: 9001

    完全なエラー メッセージ: ERROR 9001 (HY000): PD Server Timeout

    PD リクエストがタイムアウトしました。

    PDサーバーのステータス、監視データとログ、および TiDBサーバーと PDサーバー間のネットワークを確認します。

  • エラー番号: 9002

    完全なエラー メッセージ: ERROR 9002 (HY000): TiKV Server Timeout

    TiKV リクエストがタイムアウトしました。

    TiKVサーバーのステータス、監視データとログ、および TiDBサーバーと TiKVサーバー間のネットワークを確認します。

  • エラー番号: 9003

    完全なエラー メッセージ: ERROR 9003 (HY000): TiKV Server is Busy

    TiKVサーバーはビジー状態であり、これは通常、ワークロードが高すぎる場合に発生します。

    TiKVサーバーのステータス、監視データ、ログを確認します。

  • エラー番号: 9004

    完全なエラー メッセージ: ERROR 9004 (HY000): Resolve Lock Timeout

    ロック解決のタイムアウト。このエラーは、データベース内に多数のトランザクションの競合が存在する場合に発生します。

    アプリケーション コードをチェックして、データベースにロック競合が存在するかどうかを確認します。

  • エラー番号: 9005

    完全なエラー メッセージ: ERROR 9005 (HY000): Region is unavailable

    アクセスされたリージョンまたは特定のRaftグループは、レプリカが不十分であるなどの理由により利用できません。このエラーは通常、TiKVサーバーがビジー状態であるか、TiKV ノードがダウンしているときに発生します。

    TiKVサーバーのステータス、監視データ、ログを確認します。

  • エラー番号: 9006

    完全なエラー メッセージ: ERROR 9006 (HY000): GC life time is shorter than transaction duration

    GC Life Timeの間隔が短すぎます。長いトランザクションによって読み取られるはずのデータが削除される可能性があります。次のコマンドを使用してtidb_gc_life_timeを調整できます。

    SET GLOBAL tidb_gc_life_time = '30m';

    注記:

    「30m」は、30 分前に生成されたデータのみをクリーンアップすることを意味し、追加のstorage容量を消費する可能性があります。

  • エラー番号: 9500

    1 つのトランザクションが大きすぎます。

    解決策についてはエラー メッセージtransaction too large参照してください。

  • エラー番号: 9007

    エラー メッセージはERROR 9007 (HY000): Write conflictで始まります。

    エラー メッセージにreason=LazyUniquenessCheckが含まれている場合は、トランザクションが悲観的であり、 @@tidb_constraint_check_in_place_pessimistic=OFFが設定されており、アプリケーションの一意のインデックスで書き込み競合が発生していることを意味します。この場合、悲観的トランザクションの正常な実行は保証されません。アプリケーションからトランザクションを再試行するか、変数をONに設定してエラーを回避できます。

  • エラー番号: 9008

    同時に TiKV に送信されるリクエストが多すぎます。数が制限を超えています。

    リクエストのトラフィックの制限を解除するには、 tidb_store_limit増やすか0に設定します。

  • エラー番号: 9010

    TiKV はこのラフト ログを処理できません。

    TiKVサーバーの状態/モニター/ログを確認します。

  • エラー番号: 9012

    TiFlashリクエストがタイムアウトしました。

    TiFlashサーバーの状態/モニター/ログ、および TiDBサーバーとTiFlashサーバー間のネットワークを確認します。

  • エラー番号: 9013

    TiFlashサーバーはビジー状態であり、これは通常、ワークロードが高すぎる場合に発生します。

    TiFlashサーバーの状態/モニター/ログを確認してください。

MySQL ネイティブのエラー メッセージ

  • エラー番号: 2013 (HY000)

    完全なエラー メッセージ: ERROR 2013 (HY000): Lost connection to MySQL server during query

    このエラーは次のように処理できます。

    • panicがログに記録されているかどうかを確認します。
    • dmesg -T | grep -i oomを使用して、OOM が dmesg に存在するかどうかを確認します。
    • 長期間アクセスがない場合にも、このエラーが発生する可能性があります。通常、これは TCP タイムアウトが原因で発生します。 TCP が長期間使用されないと、オペレーティング システムによって TCP が強制終了されます。
  • エラー番号: 1105 (HY000)

    完全なエラー メッセージ: ERROR 1105 (HY000): other error: unknown error Wire Error(InvalidEnumValue(4004))

    このエラーは通常、TiDB のバージョンが TiKV のバージョンと一致しない場合に発生します。バージョンの不一致を回避するには、バージョンをアップグレードするときにすべてのコンポーネントをアップグレードします。

  • エラー番号: 1148 (42000)

    完全なエラー メッセージ: ERROR 1148 (42000): the used command is not allowed with this TiDB version

    LOAD DATA LOCALステートメントを実行したが、MySQL クライアントがこのステートメントの実行を許可していない場合 ( local_infileオプションの値が 0)、このエラーが発生します。

    解決策は、MySQL クライアントの起動時に--local-infile=1オプションを使用することです。たとえば、コマンドmysql --local-infile=1 -u root -h 127.0.0.1 -P 4000を実行します。デフォルト値のlocal-infile MySQL クライアントのバージョンによって異なります。したがって、特定の MySQL クライアントで設定する必要があります。

  • エラー番号: 9001 (HY000)

    完全なエラー メッセージ: ERROR 9001 (HY000): PD server timeout start timestamp may fall behind safe point

    このエラーは、TiDB が PD にアクセスできない場合に発生します。 TiDB バックグラウンドのワーカーは継続的に PD からセーフポイントをクエリし、100 秒以内にクエリに失敗するとこのエラーを報告します。一般に、これは PD 上のディスクが遅くてビジーであるか、TiDB と PD の間のネットワークに障害が発生したことが原因です。一般的なエラーの詳細については、 エラー番号と故障診断を参照してください。

  • TiDB ログ エラー メッセージ: EOF エラー

    クライアントまたはプロキシが TiDB から切断されても、TiDB は切断をすぐには認識しません。代わりに、TiDB は接続にデータを返し始めたときにのみ切断を認識します。このとき、ログには EOF エラーが出力。

トラブルシューティング

資料トラブルシューティングと資料FAQをご覧ください。

このページは役に立ちましたか?