如何显示刚刚发生的MySQL警告?

问题描述 投票:0回答:6

我刚刚运行了一个简单的 MySQL CREATE TABLE 语句,生成了该行

“查询正常,0 行受影响,1 条警告(0.07 秒)。”

不过,它实际上并没有告诉我警告是什么。如何查看刚刚发生的警告内容?我正在使用 MySQL 5.1,如果它有什么区别的话。我在网上找到的唯一内容是“显示警告;”但这只产生了

“空集(0.00 秒)。”

mysql database warnings mysql-cli mysql-command-line-client
6个回答
238
投票

SHOW WARNINGS
是我所知道的唯一方法,但是您必须在附加警告的查询之后立即运行它。如果您在其间运行任何其他查询,或者断开连接,则
SHOW WARNINGS
将不起作用。

MySQL 手册页中的 SHOW WARNINGS 没有指出任何其他方法,所以我相当确定你会坚持使用它。


121
投票

您还可以使用 \W 将命令行设置为在查询后始终显示警告

您可以使用 \w

再次关闭它们

24
投票

@HorusKol,你有这方面的文档吗?我找不到任何。但我确实发现,根据

MySQL 手册
,命令行选项 --show-warnings 可以完成这项工作。


3
投票

MySQL数据库导入数据时,经常出现警告。

这些警告很容易被忽视。

我今天看到数据时突然想看看警告是什么。

MySQL查看警告命令

show warnings;

命令很简洁,我查看的时候一般警告是这样的

1.

Warning | 1265 | Data truncated for column ‘title’ at row 1265

这个警告是字段长度不够,

导入的数据由系统自动裁剪。

2.

| Warning | 1366 | Incorrect string value: ‘\xB5\xDA\xB6\xFE\xBD\xEC...‘ for column ‘Journal title’ at row 1444 |

这是数据的错误字符集。

第二种需要修改数据库的字符集或者导入数据的txt编码格式。

3.

| Warning | 1366 | Incorrect integer value: ‘‘ for column ‘work number’ at row 13 |

这是插入空数据,如果字段允许空值,可以忽略这些警告。 4.

| Warning | 1262 | Row 11 was truncated; it contained more data than there were input columns |

这是导入数据的冗余列。

MySQL警告很容易理解,警告信息后很容易修改表。


0
投票

以上所有建议对我来说都不起作用。我使用了 SHOW WARNINGS\G 并且它有效。


0
投票

您可以启用

show-warnings
以在登录时显示带有
--show-warnings
的警告,如下所示。 *默认情况下,
show-warnings
处于禁用状态:

mysql -u john -p --show-warnings

或者,您可以启用

show-warnings
在登录后显示警告,如下所示:

mysql> warnings
Show warnings enabled.

或者:

mysql> WARNINGS
Show warnings enabled.

或者:

mysql> \W
Show warnings enabled.

然后,会出现如下警告:

mysql> SELECT 1/0;
+------+
| 1/0  |
+------+
| NULL |
+------+
1 row in set, 1 warning (0.00 sec)

Warning (Code 1365): Division by 0

并且,您可以禁用

show-warnings
以在登录后隐藏警告,如下所示:

mysql> nowarning
Show warnings disabled.

或者:

mysql> \w
Show warnings disabled.

然后,隐藏警告如下:

mysql> SELECT 1/0; 
+------+
| 1/0  |
+------+
| NULL |
+------+
1 row in set, 1 warning (0.00 sec)
© www.soinside.com 2019 - 2024. All rights reserved.