SHOW WARNINGS [LIMIT row_count] SHOW ERRORS [LIMIT row_count]
このコマンドは、MySQL 4.1.0 で導入されました。
これは、前回のコマンドでのエラー、警告、およびコメントを表示します。エラーおよび警告は、テーブルを使用する新規コマンドごとにリセットされます。
MySQL
サーバは、前回のコマンドで発生した警告とエラーの合計数を返します。これは、mysql_warning_count()
を呼び出すことによって取得できます。
max_error_count
までのメッセージが保存されます(グローバルおよびスレッド固有変数)。
@error_count
でエラー数を、@warning_count
で警告数を取得できます。
SHOW WARNINGS
では前回のコマンドで発生したエラー、警告、およびコメントがすべて表示され、SHOW
ERRORS
ではエラーだけが表示されます。
mysql>DROP TABLE IF EXISTS no_such_table;
mysql>SHOW WARNINGS;
+-------+------+-------------------------------+ | Level | Code | Message | +-------+------+-------------------------------+ | Note | 1051 | Unknown table 'no_such_table' | +-------+------+-------------------------------+
注意: MySQL 4.1.0
では警告のフレームワークが追加されただけなので、MySQL
コマンドの多くは警告を生成しません。4.1.1
では、LOAD DATA INFILE
、および
INSERT
、UPDATE
、ALTER
などの DML
ステートメントのあらゆる種類の警告をサポートします。
以下、挿入ステートメントの変換警告を生成する簡単な例を示します。
mysql>create table t1(a tinyint NOT NULL, b char(4));
Query OK, 0 rows affected (0.00 sec) mysql>insert into t1 values(10,'mysql'),(NULL,'test'),(300,'open source');
Query OK, 3 rows affected, 4 warnings (0.15 sec) Records: 3 Duplicates: 0 Warnings: 4 mysql>show warnings;
+---------+------+---------------------------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------------------------+ | Warning | 1263 | Data truncated for column 'b' at row 1 | | Warning | 1261 | Data truncated, NULL supplied to NOT NULL column 'a' at row 2 | | Warning | 1262 | Data truncated, out of range for column 'a' at row 3 | | Warning | 1263 | Data truncated for column 'b' at row 3 | +---------+------+---------------------------------------------------------------+ 4 rows in set (0.00 sec)
警告の最大数は、サーバ変数
'max_error_count'
、SET
max_error_count=[count]
を使用して指定できます。デフォルトは 64
です。この変数を '0'
にリセットすればこの設定を無効できます。max_error_count
が 0
の場合でも、警告が何回発生したか表示されますが、メッセージは保存されません。
たとえば、上記の例での以下の
ALTER
テーブルステートメントの場合、max_error_count=1
に設定すると、警告が 3
回発生しても、返される警告メッセージは 1
つだけになります。
mysql>show variables like 'max_error_count';
+-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_error_count | 64 | +-----------------+-------+ 1 row in set (0.00 sec) mysql>set max_error_count=1;
Query OK, 0 rows affected (0.00 sec) mysql>alter table t1 modify b char;
Query OK, 3 rows affected, 3 warnings (0.00 sec) Records: 3 Duplicates: 0 Warnings: 3 mysql>show warnings;
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1263 | Data truncated for column 'b' at row 1 | +---------+------+----------------------------------------+ 1 row in set (0.00 sec) mysql>
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.