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

How to show a MySQL warning that just happened?

提问人:Pops 提问时间:8/1/2009 最后编辑:Super Kai - Kazuya ItoPops 更新时间:11/15/2023 访问量:121767

问:

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

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

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

“空集(0.00 秒)。”

数据库 警告 mysql-cli mysql-command-line-client

评论

3赞 Trevor Boyd Smith 7/14/2017
正如其他人所指出的,对于交互式MySQL,您可以(1.)使用(请参阅)启动交互式会话,或者(2.)如果您在现有的交互式会话中,则可以使用(请参阅)启用相同的行为。--show-warningsman mysqlwarningsman mysql

答:

239赞 zombat 8/1/2009 #1

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

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

评论

1赞 asgs 10/9/2018
这对我有帮助 - 但是您必须在附加了警告的查询后立即运行它
123赞 HorusKol 10/14/2009 #2

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

您可以使用 \w 再次关闭它们

评论

7赞 Matt Klein 7/19/2013
这对我来说是完美的。将“\W”添加到我的脚本顶部,我们就可以开始了!
1赞 Yvan 6/1/2017
它仍然存在:dev.mysql.com/doc/refman/5.7/en/mysql-commands.html 但您可能没有使用客户端。它仅适用于 ,不适用于 MySQL 库。command-linemysqlmysql
0赞 StR 1/24/2020
有没有办法从.my.cnf文件设置此标志?
24赞 Pops 10/16/2009 #3

@HorusKol,你有这方面的文件吗?我找不到。但是我确实发现,根据MySQL手册,命令行选项可以完成这项工作。--show-warnings

评论

9赞 HorusKol 2/4/2011
如果你这样做\?在 MySQL 帮助的命令行中,您可以看到 \w(警告关闭)和 \W(警告打开)的两个选项 - 这可能取决于版本,但我很确定它一直都在 MySQL 5 中。
0赞 Pops 2/8/2011
@HorusKol,再次感谢您回来回答我可怕的评论。(我是新来的,不知道更好!
3赞 Vittore Marcas 12/4/2021 #4

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

这些警告很容易被忽略。

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

MySQL view warning 命令

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赞 Oluwamayowa Steepe 5/10/2023 #5

上面的所有建议都对我不起作用。我使用了 SHOW WARNINGS\G,它起作用了。

0赞 Super Kai - Kazuya Ito 11/9/2023 #6

您可以使用 with login 来显示警告,如下所示。*默认情况下,警告处于隐藏状态:--show-warnings

mysql -u john -p --show-warnings

或者,您可以使用 () 或登录后显示警告,如下所示:warningsWARNINGS\W

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

并且,您可以使用 () 或登录后隐藏警告,如下所示:nowarningNOWARNING\w

mysql> nowarning
Show warnings disabled.

艺术

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)

或者在 Windows 上,您可以设置如下图所示。*我的答案解释了,我的答案解释了在 Windows 上的位置:show-warnings[mysql]my.ini[mysql]my.ini

# "my.ini"

[mysql]
...
show-warnings

然后,您可以通过将 的位置设置为或显示警告来登录,如下所示。* 或者必须是第一个选项,否则会出现错误my.ini--defaults-file=--defaults-extra-file=--defaults-file=--defaults-extra-file=

mysql --defaults-file='C:\ProgramData\MySQL\MySQL Server 8.0\my.ini' -u john -p

艺术

mysql --defaults-extra-file='C:\ProgramData\MySQL\MySQL Server 8.0\my.ini' -u john -p