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

Posted

技术标签:

【中文标题】如何显示刚刚发生的 MySQL 警告?【英文标题】:How do I show a MySQL warning that just happened? 【发布时间】:2010-11-15 23:40:37 【问题描述】:

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

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

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

“空集(0.00 秒)。”

【问题讨论】:

正如其他人为交互式 mysql 指出的那样,您可以,(1.) 使用 --show-warnings 启动交互式会话(参见 man mysql)或 (2.) 如果您在现有的交互式会话,您可以使用warnings 启用相同的行为(请参阅man mysql)。 【参考方案1】:

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

SHOW WARNINGS 的 MySQL 手册页没有指明任何其他方法,所以我相当肯定你会坚持下去。

【讨论】:

这对我有帮助 - 但您必须在附加了警告的查询后立即运行它【参考方案2】:

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

你可以用 \w 再次关闭它们

【讨论】:

这对我来说是完美的。将“\W”添加到我的脚本顶部,我们就可以开始了! 它仍然存在:dev.mysql.com/doc/refman/5.7/en/mysql-commands.html 但您可能没有使用command-line mysql 客户端。它仅适用于mysql,不适用于 MySQL 库。 有没有办法从 .my.cnf 文件中设置这个标志?【参考方案3】:

@HorusKol,你有这方面的文档吗?我找不到任何东西。但根据MySQL manual,我确实发现命令行选项--show-warnings 可以完成这项工作。

【讨论】:

如果你这样做了\?在 MySQL 帮助的命令行中,您可以看到 \w(警告关闭)和 \W(警告打开)的两个选项 - 这可能取决于版本,但我很确定它一直在 MySQL 5 中。 @HorusKol,再次感谢您回来并回答我可怕的评论作为答案。 (我是新人,不知道更好!)【参考方案4】:

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警告通俗易懂,警告信息后修改表也很容易。

【讨论】:

以上是关于如何显示刚刚发生的 MySQL 警告?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 PHPMyAdmin 显示 MySQL 警告?

如何阻止 Selenium 中的 Invalid Length 警告发生?

MYSQL - 警告:#1681 不推荐使用整数显示宽度

如果未提供 URL 中的参数,则 codeigniter 显示警告错误

面向 .NET 标准的 Azure 函数显示警告

我刚刚分配了一个变量,但 echo $variable 显示了其他内容