MySQL 8.0 リファレンスマニュアル


B.2 エラー情報インタフェース

セクションB.1「エラーメッセージのソースと要素」 で説明されているように、エラーメッセージはサーバー側またはクライアント側で生成され、各エラーメッセージにはエラーコード、SQLSTATE 値、およびメッセージ文字列が含まれます。 サーバー側、クライアント側およびグローバル (サーバーとクライアント間で共有) のエラーのリストは、MySQL 8.0 Error Message Reference を参照してください。

プログラム内からのエラーチェックには、エラーメッセージ文字列ではなく、エラーコード番号または記号を使用します。 メッセージ文字列は頻繁には変更されませんが、変更は可能です。 また、データベース管理者がメッセージ文字列の言語に影響する言語設定を変更した場合は、セクション10.12「エラーメッセージ言語の設定」 を参照してください。

MySQL のエラー情報は、サーバーエラーログ、SQL レベル、クライアントプログラムおよびコマンドラインから入手できます。

エラーログ

サーバー側では、一部のメッセージはエラーログ用です。 サーバーがログを書き込む場所と方法の構成の詳細は、セクション5.4.2「エラーログ」 を参照してください。

その他のサーバーエラーメッセージはクライアントプログラムに送信することを目的としており、クライアントエラーメッセージインタフェース で説明されているように使用できます。

特定のエラーコードが存在する範囲によって、サーバーがエラーメッセージをエラーログに書き込むか、クライアントに送信するかが決まります。 これらの範囲の詳細は、エラーコード範囲 を参照してください。

SQL エラーメッセージインタフェース

SQL レベルでは、MySQL にエラー情報のソースがいくつかあります:

  • SQL ステートメントの警告およびエラーの情報は、SHOW WARNINGS ステートメントおよび SHOW ERRORS ステートメントを使用して表示できます。 warning_count システム変数は、エラー、警告およびノートの数を示します (sql_notes システム変数が無効な場合、ノートは除外されます)。 error_count システム変数はエラー数を示します。 この値には警告および注意は含まれていません。

  • GET DIAGNOSTICS ステートメントは、診断領域の診断情報を調査するために使用できます。 セクション13.6.7.3「GET DIAGNOSTICS ステートメント」を参照してください。

  • SHOW SLAVE STATUS ステートメントの出力には、レプリカサーバーで発生したレプリケーションエラーに関する情報が含まれます。

  • InnoDB テーブルに対するCREATE TABLE ステートメントが失敗した場合、SHOW ENGINE INNODB STATUS ステートメントの出力には、最後の外部キーエラーに関する情報が含まれています。

クライアントエラーメッセージインタフェース

クライアントプログラムは、次の 2 つのソースからエラーを受け取ります:

  • MySQL クライアントライブラリ内からクライアント側で発生したエラー。

  • サーバー側で発生し、サーバーによってクライアントに送信されるエラー。 これらはクライアントライブラリ内で受信され、ホストクライアントプログラムで使用できるようになります。

特定のエラーコードが存在する範囲によって、クライアントライブラリ内から発生したものか、クライアントがサーバーから受信したものかが決まります。 これらの範囲の詳細は、エラーコード範囲 を参照してください。

エラーがクライアントライブラリ内から発生したか、サーバーから受信されたかに関係なく、MySQL クライアントプログラムは、クライアントライブラリで C API 関数をコールして、エラーコード、SQLSTATE 値、メッセージ文字列およびその他の関連情報を取得します:

  • mysql_errno() は、MySQL エラーコードを返します。

  • mysql_sqlstate() は SQLSTATE 値を返します。

  • mysql_error() はメッセージ文字列を返します。

  • mysql_stmt_errno()mysql_stmt_sqlstate() および mysql_stmt_error() は、プリペアドステートメントに対応するエラー関数です。

  • mysql_warning_count() は、最新のステートメントのエラー、警告およびノートの数を返します。

クライアントライブラリのエラー関数については、MySQL 8.0 C API Developer Guide を参照してください。

MySQL クライアントプログラムは、様々な方法でエラーに応答する場合があります。 クライアントはエラーメッセージを表示して、ユーザーが修正措置を講じるか、内部的に失敗した操作の解決または再試行を試みるか、または他のアクションを実行できるようにすることができます。 たとえば、(mysql クライアントを使用して) サーバーへの接続に失敗すると、次のメッセージが表示されることがあります:

shell> mysql -h no-such-host
ERROR 2005 (HY000): Unknown MySQL server host 'no-such-host' (0)

コマンドラインエラーメッセージインタフェース

perror プログラムは、コマンド行からエラー番号に関する情報を表示します。 セクション4.8.2「perror — MySQL エラーメッセージ情報の表示」を参照してください。

shell> perror 1231
MySQL error code MY-001231 (ER_WRONG_VALUE_FOR_VAR): Variable '%-.64s'
can't be set to the value of '%-.200s'

MySQL NDB Cluster エラーの場合は、ndb_perror を使用します。 セクション23.4.16「ndb_perror — NDB エラーメッセージ情報の取得」を参照してください。

shell> ndb_perror 323
NDB error code 323: Invalid nodegroup id, nodegroup already existing:
Permanent error: Application error

関連キーワード:  エラー, 情報, サーバー, エラーメッセージ, インタフェース, ステートメント, プログラム, 参照, テーブル, エラーコード