エラーコードとトラブルシューティング
このドキュメントでは、TiDB の使用中に発生する問題について説明し、解決策を示します。
エラーコード
TiDBはMySQLのエラーコードと互換性があり、ほとんどの場合、MySQLと同じエラーコードを返します。MySQLのエラーコードの一覧については、 MySQL 8.0 エラーメッセージリファレンス参照してください。さらに、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 staleTiDBのトランザクションで書き込み競合が発生しました。アプリケーションロジックを確認し、書き込み操作を再試行してください。
エラー番号: 8018
プラグインをリロードするときに、そのプラグインが以前にロードされていない場合は、このエラーが返されます。
プラグインの初期ロードを実行できます。
エラー番号: 8019
再読み込みしようとしているプラグインのバージョンが以前のバージョンと異なります。そのため、プラグインを再読み込みできず、このエラーが返されます。
プラグインのバージョンが以前のものと同じであることを確認して、プラグインをリロードできます。
エラー番号: 8020
テーブルがロックされているときに、テーブルに対して書き込み操作を実行すると、このエラーが返されます。
テーブルのロックを解除して書き込み操作を再試行してください。
エラー番号: 8021
TiKVから読み取るキーが存在しない場合、このエラーが返されます。このエラーは内部的に使用され、外部への結果は空の読み取りとなります。
エラー番号: 8022
トランザクションのコミットは失敗し、ロールバックされました。
アプリケーションはトランザクション全体を安全に再試行できます。
エラー番号: 8023
トランザクションキャッシュへの書き込み時に空の値を設定すると、このエラーが返されます。このエラーは内部的に使用・処理され、アプリケーションには返されません。
エラー番号: 8024
無効なトランザクションです。実行中のトランザクションのトランザクションID(開始タイムスタンプ)が取得されていないことをTiDBが検出した場合、つまりこのトランザクションが無効であることが判明した場合、このエラーが返されます。
通常、このエラーは発生しません。このエラーが発生した場合は、PingCAPまたはコミュニティからサポートを受けるお知らせください。
エラー番号: 8025
書き込む単一のキーと値のペアが大きすぎます。TiDBでサポートされる単一のキーと値のペアの最大サイズは、デフォルトで6MBです。
ペアがこの制限を超える場合は、制限を緩和するために
txn-entry-size-limit構成値を適切に調整する必要があります。エラー番号: 8026
使用されているインターフェース関数は実装されていません。このエラーは内部的にのみ使用され、アプリケーションには返されません。
エラー番号: 8027
テーブルスキーマのバージョンが古くなっています。TiDBはスキーマの変更をオンラインで適用します。TiDBサーバーのテーブルスキーマバージョンがシステム全体のバージョンよりも古い場合、SQL文を実行するとこのエラーが返されます。
このエラーが発生した場合は、 TiDBサーバーと PDLeader間のネットワークを確認してください。
エラー番号: 8028
TiDB v6.3.0以降、 メタデータロック機能が導入されました。メタデータロックが無効の状態でトランザクションが実行されると、トランザクションはテーブルスキーマの変更を認識できません。そのため、トランザクションのコミット時に、TiDBはトランザクションに関連するテーブルスキーマをチェックします。実行中に関連するテーブルスキーマが変更された場合、トランザクションのコミットはこのエラーで失敗します。この時点で、アプリケーションはトランザクション全体を安全に再試行できます。
メタデータロックがRead Committed分離レベル以外で有効になっている場合、トランザクション開始からテーブルへの初回アクセスまでに、テーブル上で損失を伴う列型の変更(例えば、
INTからCHARへの変更は損失を伴うが、TINYINTからINTへの変更はデータの上書きが不要なため損失は伴わない)が発生すると、トランザクションは自動的にロールバックされず、クエリは失敗します。他のステートメントの実行を継続し、トランザクションをロールバックするかコミットするかを決定できます。エラー番号: 8029
このエラーは、データベース内で数値変換エラーが発生した場合に発生します。このエラーは内部的にのみ使用され、外部アプリケーションでは特定の種類のエラーに変換されます。
エラー番号: 8030
符号なし正整数を符号付き整数に変換すると、最大値を超えてしまい、負の整数として表示されます。このエラーは、主に警告メッセージで発生します。
エラー番号: 8031
符号なし整数への変換時に、負の整数が正の整数に変換されます。このエラーは、主に警告メッセージで発生します。
エラー番号: 8032
無効な
year形式が使用されています。3year1 桁、2 桁、または 4 桁のみを受け入れます。エラー番号: 8033
無効な値
yearが使用されています。3year有効範囲は(1901, 2155)です。エラー番号: 8037
week関数で無効なmode形式が使用されています。5mode[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_incrementとauto_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]あり、nameとversionでは-許可されません。エラー番号: 8102
プラグイン定義情報を読み取ることができません。
プラグインに関連する設定を確認してください。
エラー番号: 8103
プラグイン名が正しくありません。
プラグインの設定を確認してください。
エラー番号: 8104
プラグインのバージョンが一致しません。
プラグインの設定を確認してください。
エラー番号: 8105
プラグインが繰り返しロードされます。
エラー番号: 8106
プラグインは、名前がプラグイン名で始まっていないシステム変数を定義します。
変更するには、プラグインの開発者に連絡するか、 サポートを受けるまたはコミュニティに問い合わせてください。
エラー番号: 8107
ロードされたプラグインはバージョンを指定していません。または、指定されたバージョンが低すぎます。
プラグインの設定を確認してください。
エラー番号: 8108
サポートされていない実行プランの種類です。このエラーは内部エラーです。
このエラーが発生した場合は、PingCAP またはコミュニティからサポートを受けるリクエストしてください。
エラー番号: 8109
インデックスを分析するときに、指定されたインデックスが見つかりません。
エラー番号: 8110
デカルト積演算を実行できません。
構成の
cross-jointrueに設定します。エラー番号: 8111
EXECUTEステートメントを実行すると、対応するPrepareステートメントが見つかりません。エラー番号: 8112
EXECUTEのステートメントのパラメータの数がPrepareステートメントと一致していません。エラー番号: 8113
Prepareステートメントの実行後、EXECUTEステートメントに関連付けられたテーブル スキーマが変更されました。エラー番号: 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 DATATiDBサーバーからのローカルデータのインポートをサポートしていません。3LOCAL指定してクライアントからインポートするか、S3 または GCS にデータをアップロードしてからインポートすることができます。5LOAD DATA参照してください。エラー番号: 8156
指定されたパスは空にできません。インポート前に正しいパスを設定する必要があります。
エラー番号: 8157
指定されたファイル形式はサポートされていません。サポートされている形式については、
IMPORT INTO参照してください。エラー番号: 8158
指定されたパスは無効です。具体的な対処方法については、エラーメッセージを参照してください。Amazon S3 または GCS のパス設定については、 外部ストレージサービスのURI形式参照してください。
エラー番号: 8159
TiDB は指定された Amazon S3 または GCS パスにアクセスできません。指定された S3 または GCS バケットが存在すること、および TiDB が対応するバケットにアクセスするために必要な正しいアクセスキーとシークレットアクセスキーが指定されていることを確認してください。
エラー番号: 8160
データファイルの読み取りに失敗しました。具体的な対処方法については、エラーメッセージを参照してください。
エラー番号: 8162
ステートメントにエラーがあります。具体的な対処方法については、エラーメッセージを参照してください。
エラー番号: 8163
指定されたオプションは不明です。サポートされているオプションについては、
IMPORT INTO参照してください。エラー番号: 8164
指定されたオプション値が無効です。有効な値については、
IMPORT INTO参照してください。エラー番号: 8165
重複したオプションが指定されています。各オプションは1回のみ指定できます。
エラー番号: 8166
一部のオプションは特定の状況でのみ使用できます。対処方法については、該当するエラーメッセージを参照してください。サポートされているオプションについては、
IMPORT INTO参照してください。エラー番号: 8170
指定されたジョブは存在しません。
エラー番号: 8171
現在のジョブステータスでは、現在の操作は実行できません。具体的な対処方法については、該当するエラーメッセージを参照してください。
エラー番号: 8173
IMPORT INTO実行すると、TiDB は現在の環境(下流テーブルが空かどうかなど)をチェックします。具体的な対処方法については、具体的なエラーメッセージを参照してください。エラー番号: 8200
DDL 構文はまだサポートされていません。
参考としてMySQL DDLの互換性参照してください。
エラー番号: 8214
DDL 操作は
admin cancel操作によって終了します。エラー番号: 8215
ADMIN REPAIR TABLEは失敗します。このエラーが発生した場合は、PingCAP またはコミュニティからサポートを受けるリクエストしてください。
エラー番号: 8216
AUTO_RANDOM列の使い方が間違っています。変更するには
AUTO_RANDOM参照してください。エラー番号: 8223
このエラーは、データがインデックスと一致していないことを検出したときに発生します。
このエラーが発生した場合は、PingCAP またはコミュニティからサポートを受けるリクエストしてください。
エラー番号: 8224
DDL ジョブが見つかりません。
restore操作で指定されたジョブ ID が存在するかどうかを確認します。エラー番号: 8225
DDL 操作は完了しており、キャンセルできません。
エラー番号: 8226
DDL 操作はほぼ完了しており、キャンセルできません。
エラー番号: 8227
シーケンスの作成時にサポートされていないオプションが使用されています。
サポートされているオプションのリストについては、 シーケンスドキュメント参照してください。
エラー番号: 8228
シーケンスに
SETVAL使用すると、サポートされていない型が指定されます。関数の例についてはシーケンスドキュメント参照してください。
エラー番号: 8229
トランザクションの存続時間を超えました。
現在のトランザクションをコミットまたはロールバックし、新しいトランザクションを開始します。
エラー番号: 8230
TiDB は現在、新しく追加された列のデフォルト値としてシーケンスを使用することをサポートしておらず、使用するとこのエラーが報告されます。
エラー番号: 8248
リソースグループは既に存在します。リソースグループが繰り返し作成されると、このエラーが返されます。
エラー番号: 8249
リソースグループが存在しません。このエラーは、存在しないリソースグループを変更またはバインドした場合に返されます。1 リソースグループを作成する参照してください。
エラー番号: 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このエラーは、リソースグループの制限を超えた消費を試みた際に返されます。このエラーは通常、単一のトランザクションが大きすぎるか、同時実行トランザクションが多すぎる場合に発生します。トランザクションサイズを調整するか、同時実行クライアント数を減らす必要があります。
エラー番号: 8253
クエリはランナウェイクエリの条件を満たしているため停止します。1 ランナウェイクエリ参照してください。
エラー番号: 8254
クエリは、ランナウェイクエリの隔離監視条件を満たしているため停止します。1 ランナウェイクエリ参照してください。
エラー番号: 8260
DDL 操作は
ADMIN PAUSEで一時停止できません。エラー番号: 8261
DDL 操作は
ADMIN RESUMEでは再開できません。エラー番号: 8262
DDL は
ADMIN PAUSE停止されており、再度一時停止することはできません。エラー番号: 8263
このDDLは特定のBDRロールでは実行できません。クラスタが双方向レプリケーションになっていることを確認してください。クラスタが双方向レプリケーションになっていない場合は、
ADMIN UNSET BDR ROLE;使用してDDLを正常化できます。エラー番号: 9001
完全なエラーメッセージ:
ERROR 9001 (HY000): PD server timeoutPD 要求がタイムアウトしました。
PDサーバーのステータス、監視データ、ログ、および TiDBサーバーと PDサーバー間のネットワークを確認します。
エラー番号: 9002
完全なエラーメッセージ:
ERROR 9002 (HY000): TiKV server timeoutTiKV 要求がタイムアウトしました。
TiKVサーバーのステータス、監視データ、ログ、および TiDBサーバーと TiKVサーバー間のネットワークを確認します。
エラー番号: 9003
完全なエラーメッセージ:
ERROR 9003 (HY000): TiKV Server is BusyTiKVサーバーはビジー状態です。これは通常、ワークロードが高すぎる場合に発生します。
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は短すぎます。長いトランザクションによって読み取られるはずだったデータが削除される可能性があります。3tidb_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使用して dmesg に OOM が存在するかどうかを確認します。- 長時間アクセスがない場合も、このエラーが発生する可能性があります。これは通常、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 versionLOAD 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はすぐには切断を認識しません。接続にデータを返し始めた時点で初めて切断を認識します。この時点で、ログにはEOFエラーが出力。
トラブルシューティング
トラブルシューティングとFAQ文書を参照してください。