【MySQL】Can't get stat of './mysql/slow_log.CSV' (Errcode: 2)

在给数据库开启慢日志查询的时候遇到 如下问题
root@rac1 : (none) 23:39:53> set global slow_query_log = 1;
ERROR 13 (HY000): Can't get stat of './mysql/slow_log.CSV' (Errcode: 2)
原因是因为数据库中没有slow_log表对应的物理文件,解决的方法有如下两种:
方法一 手工创建slow_log.CSV
[root@rac1 mysql]# touch slow_log.CSV
[root@rac1 mysql]# chown -R mysql:mysql slow_log.CSV
[root@rac1 mysql]# chmod 660 slow_log.CSV
root@rac1 : (none) 23:42:36>set global slow_query_log = 1;
Query OK, 0 rows affected, 1 warning (0.17 sec)
root@rac1 : (none) 23:43:03>show warnings;
+-------+------+--------------------------------------------------------------+
| Level | Code | Message                                                      |
+-------+------+--------------------------------------------------------------+
| Error | 1194 | Table 'slow_log' is marked as crashed and should be repaired | 
+-------+------+--------------------------------------------------------------+
1 row in set (0.00 sec)
root@rac1 : (none) 23:48:03>repair table mysql.slow_log;
+----------------+--------+----------+----------+
| Table          | Op     | Msg_type | Msg_text |
+----------------+--------+----------+----------+
| mysql.slow_log | repair | status   | OK       | 
+----------------+--------+----------+----------+
1 row in set (0.61 sec)
root@rac1 : (none) 23:51:03>set global slow_query_log = 1;
Query OK, 0 rows affected (0.00 sec)
方法二 在数据库中以重建表的方式 (个人比较推荐第二种方式)
[root@rac1 ~]# mysql
root@rac1 : (none) 21:47:46> 
root@rac1 : (none) 21:47:47> show global variables like '%slow%';
+---------------------+----------------+
| Variable_name       | Value          |
+---------------------+----------------+
| log_slow_queries    | ON             |
| slow_launch_time    | 2              |
| slow_query_log      | ON             |
| slow_query_log_file | slow_query.log |
+---------------------+----------------+
4 rows in set (0.06 sec)
root@rac1 : (none) 21:48:19> set global slow_query_log=off;
Query OK, 0 rows affected (0.00 sec)
root@rac1 : (none) 21:48:47> 
root@rac1 : (none) 21:48:47> show global variables like '%slow%';
+---------------------+----------------+
| Variable_name       | Value          |
+---------------------+----------------+
| log_slow_queries    | OFF            |
| slow_launch_time    | 2              |
| slow_query_log      | OFF            |
| slow_query_log_file | slow_query.log |
+---------------------+----------------+
4 rows in set (0.01 sec)
root@rac1 : (none) 21:48:49> show global variables like '%slow%';
+---------------------+----------------+
| Variable_name       | Value          |
+---------------------+----------------+
| log_slow_queries    | OFF            |
| slow_launch_time    | 2              |
| slow_query_log      | OFF            |
| slow_query_log_file | slow_query.log |
+---------------------+----------------+
4 rows in set (0.00 sec)

root@rac1 : (none) 21:49:50> set global slow_query_log=on;
ERROR 13 (HY000): Can't get stat of './mysql/slow_log.CSV' (Errcode: 2)
root@rac1 : mysql 21:50:33> show create table slow_log;
ERROR 13 (HY000): Can't get stat of './mysql/slow_log.CSV' (Errcode: 2)
从一个有slow_log 的数据库中查看slow_log的表创建ddl 语句,进行创建!
root@rac1 : mysql 21:51:23> CREATE TABLE `slow_log` (
    ->   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    ->   `user_host` mediumtext NOT NULL,
    ->   `query_time` time NOT NULL,
    ->   `lock_time` time NOT NULL,
    ->   `rows_sent` int(11) NOT NULL,
    ->   `rows_examined` int(11) NOT NULL,
    ->   `db` varchar(512) NOT NULL,
    ->   `last_insert_id` int(11) NOT NULL,
    ->   `insert_id` int(11) NOT NULL,
    ->   `server_id` int(10) unsigned NOT NULL,
    ->   `sql_text` mediumtext NOT NULL
    -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Slow log';
Query OK, 0 rows affected (0.04 sec)
root@rac1 : mysql 21:51:43> 
root@rac1 : mysql 21:51:55> set global slow_query_log=on;
Query OK, 0 rows affected (0.00 sec)
root@rac1 : mysql 21:52:13> 
root@rac1 : mysql 21:52:13> show global variables like '%out%'; 
+----------------------------+----------+
| Variable_name              | Value    |
+----------------------------+----------+
| log_output                 | FILE     |
+----------------------------+----------+
11 rows in set (0.00 sec)

root@rac1 : mysql 21:52:20> set global log_output = 'TABLE';
Query OK, 0 rows affected (0.00 sec)
root@rac1 : mysql 21:52:41> show global variables like '%out%'; 
+----------------------------+----------+
| Variable_name              | Value    |
+----------------------------+----------+
| log_output                 | TABLE    |
+----------------------------+----------+
11 rows in set (0.00 sec)
如果log_output 用TABLE形式记录日志,mysql会以表的形式将slow_log存入mysql表中的slow_log表中。
root@rac1 : mysql 21:52:43> select sleep(60);
+-----------+
| sleep(60) |
+-----------+
|         0 |
+-----------+
1 row in set (1 min 0.00 sec)
root@rac1 : mysql 21:54:01> select * from slow_log \G
*************************** 1. row ***************************
    start_time: 2012-08-24 21:54:01
     user_host: root[root] @ localhost [127.0.0.1]
    query_time: 00:01:00
     lock_time: 00:00:00
     rows_sent: 1
 rows_examined: 0
            db: mysql
last_insert_id: 0
     insert_id: 0
     server_id: 1
      sql_text: select sleep(60)
1 row in set (0.00 sec)
root@rac1 : mysql 21:57:53> 
root@rac1 : mysql 21:58:25> set global log_output = 'FILE';     
Query OK, 0 rows affected (0.00 sec)
root@rac1 : mysql 21:58:30> select sleep(10);                   
+-----------+
| sleep(10) |
+-----------+
|         0 |
+-----------+
1 row in set (10.00 sec)
由于log_output 用FILE形式记录日志,所以我们在vim  /home/mysql/log/mysql-slow.log 将会看到执行超过0秒的所有的sql
-bash-3.2$ tail -f slow_query.log
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument
# Time: 120824 21:58:48
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 10.001827  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
use mysql;
SET timestamp=1345816728;
select sleep(10);
至此问题完全得到解决。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22664653/viewspace-741767/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22664653/viewspace-741767/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您在使用CubeIDE进行编译时遇到了一个错误,错误信息显示为:stat: ../core/startup/startup_stm32f103c8tx.s: permission denied(无法获取权限)。这个错误通常表示无法在指定的路径中读取或写入文件。 这个问题可能是由于以下几个原因引起的: 1. 权限设置不正确:请确保您有权限读取和写入文件。您可以检查文件的权限设置并确保您拥有足够的权限来进行读取和写入。 2. 文件被占用:如果其他进程正在使用这个文件,您可能无法访问它。您可以尝试关闭其他使用该文件的进程,然后再尝试编译。 3. 文件不存在:如果指定的路径中不存在startup_stm32f103c8tx.s文件,那么就会出现权限被拒绝的错误。请确保文件确实存在于指定的路径中。 4. 文件系统错误:如果文件所在的文件系统出现错误,可能会导致无法访问文件。您可以尝试重启计算机或重新挂载文件系统来解决该问题。 如果您已经尝试了以上的方法但仍然无法解决问题,建议您查阅CubeIDE的官方文档或寻求相关技术支持,以获取更详细的解决方案。 ### 回答2: 这个错误表示执行CubeIDE时,无法在文件“../core/startup/startup_stm32f103c8tx.s”上获取权限。通常情况下,这可能是操作系统或文件系统权限设置的问题。 要解决这个问题,可以尝试以下步骤: 1. 确保你有足够的权限来访问该文件。这意味着你需要是文件的所有者或具有足够的读/写权限。你可以使用操作系统的文件管理工具或命令来检查和更改文件权限。 2. 检查文件路径是否正确。确保文件在指定的位置存在,并且路径是正确的。如果路径错误,CubeIDE将无法找到文件并执行操作。 3. 检查文件是否被其他进程或程序占用。如果该文件正在被其他程序使用,CubeIDE将无法访问它。关闭其他可能使用该文件的程序,然后重新执行操作。 4. 如果你正在使用共享文件系统或网络驱动器,确保你有足够的权限来访问共享文件。有时在使用网络驱动器时,权限设置可能会导致访问问题。联系系统管理员或网络管理员检查和解决权限问题。 如果以上步骤都没有解决问题,你可能需要考虑重新安装CubeIDE或与CubeIDE的开发团队联系以获取更多支持。 ### 回答3: 这个错误信息是在CubeIDE软件中使用make命令时出现的。错误的原因是,软件无法对../core/startup/startup_stm32f103c8tx.s文件进行操作,因为没有权限。这可能是由于以下几个原因导致的。 首先,检查一下../core/startup/startup_stm32f103c8tx.s文件的属性和权限设置是否正确。确保该文件的属性设置为可读写,并且对于当前用户具有足够的权限。 其次,尝试以管理员身份运行CubeIDE软件。在某些情况下,权限问题可能是由于当前用户的权限不足导致的。通过以管理员身份运行软件,你可能会获得对该文件的足够权限。 第三,确保该文件没有被其他程序或进程占用。在使用make命令之前,关闭任何可能占用该文件的程序。这样可以确保软件能够正确读取和写入该文件,避免权限被拒绝的问题。 最后,尝试重新安装CubeIDE软件。有时候,软件的安装过程中可能会出现一些错误,导致权限设置不正确。通过重新安装软件,可以解决这些问题,并恢复对所有文件和目录的正确权限。 总之,要解决这个CubeIDE软件的错误,你需要确保相关文件的属性和权限设置正确,以及尝试以管理员身份运行软件。如果问题仍然存在,可以尝试重新安装软件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值