我发现各种各样的说法都说你可以将警告记录到 MySQL 错误日志中,但我无法真正实现这一点。
我确实有错误日志在工作,并且 MySQL 在启动和关闭时以及偶尔在其他时间打印一些内容,但如果我例如SELECT CAST('123' AS DATE);
然后SHOW WARNINGS;
我可以看到警告,但它不会出现在任何日志中。
我也尝试启用常规日志和慢速查询日志,但这些也没有显示警告。
我已经尝试过log_warnings = 1
和log_warnings = 2
,但仍然没有记录警告。
我究竟做错了什么?
mysql> show variables like '%error%';
+--------------------+--------------------------+
| Variable_name | Value |
+--------------------+--------------------------+
| error_count | 0 |
| log_error | /var/log/mysql/mysql.err |
| max_connect_errors | 10 |
| max_error_count | 1024 |
| slave_skip_errors | OFF |
+--------------------+--------------------------+
mysql> show variables like '%warn%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_warnings | 1 |
| sql_warnings | OFF |
| warning_count | 0 |
+---------------+-------+
3 rows in set (0.06 sec)
mysql> show variables like '%log%';
+-----------------------------------------+-------------------------------+
| Variable_name | Value |
+-----------------------------------------+-------------------------------+
...
| general_log | ON |
| general_log_file | /var/log/mysql/general.log |
...
| log | ON |
...
| log_error | /var/log/mysql/mysql.err |
| log_output | FILE |
| log_queries_not_using_indexes | ON |
...
| log_warnings | 1 |
...
| slow_query_log | ON |
| slow_query_log_file | /var/log/mysql/mysql-slow.log |
...
+-----------------------------------------+-------------------------------+
编辑:
mysql> show global status like 'Aborted%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| Aborted_clients | 24 |
| Aborted_connects | 15 |
+------------------+-------+
2 rows in set (0.08 sec)
编辑:
澄清:我确实收到了[Warning] Aborted connection 1 to db...
并记录了消息,但没有收到我在插入某些东西或运行之后[Warning] Access denied for user...
可以看到的警告,而这正是我正在寻找的。SHOW WARNINGS
LOAD DATA INFILE...
答案1
从 :http://ushastry.blogspot.in/2011/02/mysql-bulk-import-and-logging-warnings.html
/path/to/mysql --show-warnings –uUserName –pPassword DBNAME < /path/to/dump_file.sql >> /path/to/load_warnings.log 2>&1
答案2
我得出的结论是这是不可能的。MySQL 不会将这些警告记录到错误日志中。只有诸如身份验证失败、中止连接等情况才会记录。