如何显示刚刚发生的 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 警告?的主要内容,如果未能解决你的问题,请参考以下文章
如何阻止 Selenium 中的 Invalid Length 警告发生?