您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

MySQL数据库中,如何记录SQL执行语句

2025/12/23 3:23:48发布20次查看
今天有个同事让我帮忙看一张报表, 这张报表是一个开源的系统产生出来的,后台数据库用的是mysql.问题是一张报表的数据是错误的,当时另外一张报表是对的,所以希望能够找出后台逻辑,这样可以对报表进行修改。 这是我第一次接触mysql,所以说需要时间研究一
今天有个同事让我帮忙看一张报表, 这张报表是一个开源的系统产生出来的,后台数据库用的是mysql.问题是一张报表的数据是错误的,当时另外一张报表是对的,所以希望能够找出后台逻辑,这样可以对报表进行修改。
这是我第一次接触mysql,所以说需要时间研究一下。当时的想法是像sql server或者oracle抓trace看到运行的sql语句。
开始连接到mysql,看了一下help然后用root超级用户登录,一直提示错误无法连接到localhost,再查看到有个参数是p指定端口,然后把端口加进去就可以连接上了。
登录以后运行show processlist,但是只能看到存在的一些spid,没有详细的sql语句。
之后就想着找一个gui的工具抓trace,看到其实mysql提供了一些log是可以记录执行的sql以及允许缓慢的sql。命令如下:
-- 打开sql执行记录功能
set global log_output='table';                             -- 输出到表
set global log=on;                                                -- 打开所有命令执行记录功能general_log, 所有语句: 成功和未成功的.
set global log_slow_queries=on;                        -- 打开慢查询sql记录slow_log, 执行成功的: 慢查询语句和未使用索引的语句
set global long_query_time=0.1;                          -- 慢查询时间限制(秒)
set global log_queries_not_using_indexes=on;  -- 记录未使用索引的sql语句
-- 查询sql执行记录
select * from mysql.slow_log order by 1;           -- 执行成功的:慢查询语句,和未使用索引的语句
select * from mysql.general_log order by 1;      -- 所有语句:  成功和未成功的.
-- 关闭sql执行记录
set global log=off;
set global log_slow_queries=off;
但是我运行的时候直接报错,说“unknown system variable logoutput”。
用show variables查看当前可配置选项,没有看到global log_output对应的配置项。 而且在服务器上夜找不到mysql的配置文档。
再看help文档是5.1版本的,是不是因为版本问题?带着这个疑问,查询了一下@@version,我们的是4.1的版本,再查4.1的帮助文件,就没有上面的那些配置项了。
虽然没有抓到trace,但是由于知道需要查询的列,所以还是找到了对应的信息,然后将错误数据做了更改report就正确了。看来有时间也要稍微了解一下mysql了,毕竟很多开源的软件都是用这个数据库作为后台的。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product