【藏经阁】mysql.slow_log 的具体语句看不到怎么办

环境

  • MySQL 8.0.40

问题描述

在查询 mysql.slow_log 表时,无法直观的看到具体的慢SQL,而是看到一串二进制文件

mysql> set global log_output='FILE,TABLE';
Query OK, 0 rows affected (0.00 sec)

-- 模拟一条慢SQL
mysql> select sleep(2);
+----------+
| sleep(2) |
+----------+
|        0 |
+----------+
1 row in set (2.00 sec)

-- 看到 sql_text 的值为 0x73656C65637420736C656570283229
mysql> select * from mysql.slow_log;
+----------------------------+----------------------------------------+-----------------+-----------------+-----------+---------------+----+----------------+-----------+-----------+----------------------------------+-----------+
| start_time                 | user_host                              | query_time      | lock_time       | rows_sent | rows_examined | db | last_insert_id | insert_id | server_id | sql_text                         | thread_id |
+----------------------------+----------------------------------------+-----------------+-----------------+-----------+---------------+----+----------------+-----------+-----------+----------------------------------+-----------+
| 2025-06-09 10:18:15.925166 | super_user[super_user] @  [10.10.2.11] | 00:00:02.000627 | 00:00:00.000000 |         1 |             1 |    |              0 |         0 |       211 | 0x73656C65637420736C656570283229 |   3731274 |
+----------------------------+----------------------------------------+-----------------+-----------------+-----------+---------------+----+----------------+-----------+-----------+----------------------------------+-----------+
1 row in set (0.00 sec)

问题解决

问题在于默认存储字段为 BLOB 类型,想要正常查看也很简单,转换一下即可

mysql> select a.*,CONVERT(sql_text USING utf8mb4) AS sql_text from mysql.slow_log a;
+----------------------------+----------------------------------------+-----------------+-----------------+-----------+---------------+----+----------------+-----------+-----------+----------------------------------+-----------+-----------------+
| start_time                 | user_host                              | query_time      | lock_time       | rows_sent | rows_examined | db | last_insert_id | insert_id | server_id | sql_text                         | thread_id | sql_text        |
+----------------------------+----------------------------------------+-----------------+-----------------+-----------+---------------+----+----------------+-----------+-----------+----------------------------------+-----------+-----------------+
| 2025-06-09 10:18:15.925166 | super_user[super_user] @  [10.10.2.11] | 00:00:02.000627 | 00:00:00.000000 |         1 |             1 |    |              0 |         0 |       211 | 0x73656C65637420736C656570283229 |   3731274 | select sleep(2) |  -- 这边展示出具体的慢SQL了
+----------------------------+----------------------------------------+-----------------+-----------------+-----------+---------------+----+----------------+-----------+-----------+----------------------------------+-----------+-----------------+
1 row in set (0.00 sec)
原文链接:,转发请注明来源!