mysql general_log的清除

heyli 2012-05-29 03:55:02
日志是记录在表中 执行 DELETE FROM general_log WHERE event_time<='2012-05-29 14:40:02'
报 You can't use locks with log tables 换成root也一样
我要按时间段清除这个表的记录 请问有什么办法
搜了半天没搜到有用的信息
...全文
674 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
heyli 2012-05-30
  • 打赏
  • 举报
回复
非常感谢各位
我是要读取除 select 外的语句 然后做一个同步 非常蛋痛的一个功能 用wwwwb的方法实现了
rucypli 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

非常感谢各位
我是要读取除 select 外的语句 然后做一个同步 非常蛋痛的一个功能 用wwwwb的方法实现了
[/Quote]
除了select外的语句 那不就是binlog吗 用binlog要比gengral效率高很多啊
ACMAIN_CHM 2012-05-29
  • 打赏
  • 举报
回复
先停一下LOG,然后再删除。
wwwwb 2012-05-29
  • 打赏
  • 举报
回复
估计楼主是要删除部分记录,先更名,删除记录,再更名过来
rucypli 2012-05-29
  • 打赏
  • 举报
回复
直接truncate table general_log;

mysql> truncate table general_log;
Query OK, 0 rows affected (0.02 sec)
wwwwb 2012-05-29
  • 打赏
  • 举报
回复
上述是清空general_log,可以参照方法保留所需记录
wwwwb 2012-05-29
  • 打赏
  • 举报
回复
不能直接删除,间接方法
USE mysql;
CREATE TABLE gn2 LIKE general_log;
RENAME TABLE general_log TO oldLogs, gn2 TO general_log;

heyli 2012-05-29
  • 打赏
  • 举报
回复
不是二进制文件 只是普通的查询日志
结构如下
1 Query UPDATE tp_cart SET user_id='126391',session_id='ed69874473fa2c65893ac5485b79b2d0' WHERE (user_id = '126391' OR session_id = 'ed69874473fa2c65893ac5485b79b2d0') AND store_id <> '0'
1 Query COMMIT
heyli 2012-05-29
  • 打赏
  • 举报
回复
... 没办法删除
日志表不支持LOCK TABLES,并且也不允许用户在其上进行INSERT / UPDATE / DELETE操作;
有木有什么其它的办法 我试着把日志写进文件 但语句太长的时候自动换行了
Rotel-刘志东 2012-05-29
  • 打赏
  • 举报
回复
日志是二进制的吗
purge master logs to 'filename.number';

56,864

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧