ano*_*919 21 mysql sql logging view
我没有运行PHP的命令!
我将MySQL log_error值设置为/var/log/mysql/error.log
但是,当我连接到数据库并运行SQL命令时,错误不会出现在日志中.
SELECT *
FROM some_table
where this_is_invalid_and_will_fail="Doesn't matter because column doesn't exist!";
Run Code Online (Sandbox Code Playgroud)
有些命令从某种Windows应用程序运行.所有我想知道的是它发送到MySQL服务器的无效命令,以便我可以尝试解决它们.
Mch*_*chl 17
错误日志不会这样做:https: //dev.mysql.com/doc/refman/8.0/en/error-log.html
错误日志包含指示mysqld何时启动和停止的信息以及服务器运行时发生的任何严重错误.
MySQL不会在任何地方记录无效/失败的查询.
如果是出于调试目的,您可以尝试设置MySQL代理,我可以记录这个:
http://dev.mysql.com/downloads/mysql-proxy/
And*_*lin 10
基本上,有两种方式.
1)设置某种代理,可以记录错误查询.原始mysql代理有很多分支(@Mchl提到) - https://github.com/search?utf8=%E2%9C%93&q=MySQL+Proxy你也可以找到最新版本的原始的mysql代理在这里https://github.com/mysql/mysql-proxy
我不喜欢这种方式,因为它太复杂,无法快速调试
2)您可以启用mysql中的常规日志(将记录所有查询).它会产生很大的开销并且不符合生产要求,但是它可以快速简便地修复开发环境中的错误.
只需登录您的mysql并执行即可
SET GLOBAL general_log = 'ON';
SHOW GLOBAL VARIABLES LIKE 'general_log%';
你会看到日志的位置,比如
+------------------+------------------------+
| Variable_name | Value |
+------------------+------------------------+
| general_log | OFF |
| general_log_file | /mnt/ssd/mysql/s.log |
+------------------+------------------------+
之后执行
mysqladmin flush-logs -u root -p
当您需要停止日志时 - 只需执行即可
SET GLOBAL general_log = 'OFF';
从 mysql 版本 5.6.3(2011-10-03 发布)开始,有一个名为 的变量log-raw
允许您在常规查询日志中包含无效查询:
https://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_log-raw
您需要使用general-log
和打开一般查询日志general-log-file
,例如:
[mysqld]
general-log=1
log-raw=1
general-log-file=/var/log/mysql/general.log
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28314 次 |
最近记录: |