MySQL 5.1 リファレンスマニュアル :: 12 SQL ステートメント構文 :: 12.5 データベース管理ステートメント :: 12.5.4 SHOW 構文 :: 12.5.4.31 SHOW WARNINGS 構文
« 12.5.4.30 SHOW VARIABLES 構文

12.5.5 その他の管理ステートメント »
Section Navigation      [Toggle]
  • 12.5.4 SHOW 構文
  • 12.5.4.1 SHOW AUTHORS 構文
  • 12.5.4.2 SHOW CHARACTER SET 構文
  • 12.5.4.3 SHOW COLLATION 構文
  • 12.5.4.4 SHOW COLUMNS 構文
  • 12.5.4.5 SHOW CONTRIBUTORS 構文
  • 12.5.4.6 SHOW CREATE DATABASE 構文
  • 12.5.4.7 SHOW CREATE EVENT
  • 12.5.4.8 SHOW CREATE PROCEDURE と SHOW CREATE FUNCTION 構文
  • 12.5.4.9 SHOW CREATE TABLE 構文
  • 12.5.4.10 SHOW CREATE VIEW 構文
  • 12.5.4.11 SHOW DATABASES 構文
  • 12.5.4.12 SHOW ENGINE 構文
  • 12.5.4.13 SHOW ENGINES 構文
  • 12.5.4.14 SHOW ERRORS 構文
  • 12.5.4.15 SHOW EVENTS
  • 12.5.4.16 SHOW GRANTS 構文
  • 12.5.4.17 SHOW INDEX 構文
  • 12.5.4.18 SHOW INNODB STATUS 構文
  • 12.5.4.19 SHOW OPEN TABLES 構文
  • 12.5.4.20 SHOW PLUGINS 構文
  • 12.5.4.21 SHOW PRIVILEGES 構文
  • 12.5.4.22 SHOW PROCEDURE CODE と SHOW FUNCTION CODE 構文
  • 12.5.4.23 SHOW PROCEDURE STATUS と SHOW FUNCTION STATUS 構文
  • 12.5.4.24 SHOW PROCESSLIST 構文
  • 12.5.4.25 SHOW SCHEDULER STATUS 構文
  • 12.5.4.26 SHOW STATUS 構文
  • 12.5.4.27 SHOW TABLE STATUS 構文
  • 12.5.4.28 SHOW TABLES 構文
  • 12.5.4.29 SHOW TRIGGERS 構文
  • 12.5.4.30 SHOW VARIABLES 構文
  • 12.5.4.31 SHOW WARNINGS 構文

12.5.4.31. SHOW WARNINGS 構文

SHOW WARNINGS [LIMIT [offset,] row_count]
SHOW COUNT(*) WARNINGS

SHOW WARNINGS は、メッセージを作成した最後のステートメントから生じたエラー、警告、そしてノート メッセージを表示、または、もしテーブルを利用した最後のステートメントが何のメッセージも作成しなければ、何も表示しません。関連ステートメントである SHOW ERRORS はエラーだけを表示します。詳しくは 項12.5.4.14. 「SHOW ERRORS 構文」 を参照してください。

テーブルを利用するそれぞれの新ステートメントに対して、メッセージのリストはリセットされます。

SHOW COUNT(*) WARNINGS ステートメントはエラー、警告、そしてノートの総数を表示します。warning_count 変数からもこの数字を検索する事ができます。

SHOW COUNT(*) WARNINGS;
SELECT @@warning_count;

もし max_error_count システム変数が、全てのメッセージの格納ができないほど低く設定されると、warning_count の値は SHOW WARNINGS によって表示されるメッセージ数よりも大きくなります。このセクションの後の方で表示される例で、これがどのように起きるのか紹介しています。

LIMIT 条項は SELECT ステートメントに対するのと同じ構文を持っています。詳しくは 項12.2.7. 「SELECT 構文」 を参照してください。

MySQL サーバは、最後のステートメントから生じたエラー、警告、そしてノートの総数を送り返します。もし C API を利用していれば、この値は mysql_warning_count() をコールする事で得る事ができます。詳しくは 項23.2.3.72. 「mysql_warning_count()」 を参照してください。

警告は、LOAD DATA INFILE や、また DML INSERT、UPDATE、CREATE TABLE、そして ALTER TABLE のような DML ステートメントなどのようなステートメントに対して作成されます。

次の DROP TABLE ステートメントはノートをもたらします:

mysql> DROP TABLE IF EXISTS no_such_table;
mysql> SHOW WARNINGS;
+-------+------+-------------------------------+
| Level | Code | Message                       |
+-------+------+-------------------------------+
| Note  | 1051 | Unknown table 'no_such_table' |
+-------+------+-------------------------------+

ここに、CREATE TABLE に対する構文警告と、INSERT に対する変換警告を表すシンプルな例があります。

mysql> CREATE TABLE t1 (a TINYINT NOT NULL, b CHAR(4)) TYPE=MyISAM;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> SHOW WARNINGS\G
*************************** 1. row ***************************
  Level: Warning
   Code: 1287
Message: 'TYPE=storage_engine' is deprecated, use
         'ENGINE=storage_engine' instead
1 row in set (0.00 sec)

mysql> INSERT INTO t1 VALUES(10,'mysql'),(NULL,'test'),
    -> (300,'Open Source');
Query OK, 3 rows affected, 4 warnings (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 4

mysql> SHOW WARNINGS\G
*************************** 1. row ***************************
  Level: Warning
   Code: 1265
Message: Data truncated for column 'b' at row 1
*************************** 2. row ***************************
  Level: Warning
   Code: 1263
Message: Data truncated, NULL supplied to NOT NULL column 'a' at row 2
*************************** 3. row ***************************
  Level: Warning
   Code: 1264
Message: Data truncated, out of range for column 'a' at row 3
*************************** 4. row ***************************
  Level: Warning
   Code: 1265
Message: Data truncated for column 'b' at row 3
4 rows in set (0.00 sec)

エラー警告、そしてノート メッセージの最高格納数は max_error_count システム変数によってコントロールされています。デフォルトにより、その値は64です。格納するメッセージ数を変更したければ、max_error_count の値を変更してください。次の例では ALTER TABLE ステートメントは3つの警告メッセージを発生しますが、max_error_count が1に設定されている為、そのうちの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> SELECT @@warning_count;
+-----------------+
| @@warning_count |
+-----------------+
|               3 |
+-----------------+
1 row in set (0.01 sec)

mysql> SHOW WARNINGS;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1263 | Data truncated for column 'b' at row 1 |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)

警告を無効にするには、max_error_count を0に設定してください。この場合、warning_count はいくつの警告が起きたか指示しますが、どのメッセージも格納はされません。

SQL_NOTES セッション変数を0に設定して、Note レベルの警告が記録されないようにできます。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates