V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mfanming
V2EX  ›  问与答

如何跟踪 mysql 数据表变化?在写 DZ 插件

  •  1
     
  •   mfanming · 2016-06-11 11:08:26 +08:00 · 1684 次点击
    这是一个创建于 3096 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如做发帖功能的插件,我需要先知道原有发帖功能变化了哪些数据表

    12 条回复    2016-06-12 17:33:24 +08:00
    popu111
        1
    popu111  
       2016-06-11 11:27:49 +08:00   ❤️ 1
    看源码啊 0w0 或者 dump 出来比对
    yeyeye
        2
    yeyeye  
       2016-06-11 11:49:55 +08:00   ❤️ 1
    7.0 的时候是修改了好像是 4 个地方。你问我怎样知道的?

    去火车采集器论坛找个相同版本的发布插件就知道了
    cevincheung
        3
    cevincheung  
       2016-06-11 12:23:42 +08:00   ❤️ 1
    难道不是 QueryLog
    mfanming
        4
    mfanming  
    OP
       2016-06-11 15:13:24 +08:00
    @cevincheung 没用过...
    mfanming
        5
    mfanming  
    OP
       2016-06-11 15:16:43 +08:00
    @yeyeye 明白你的意思,看看插件做了哪些写入和 update 的工作,如果不是发新帖,比如评分,机器人自动回帖,这样的该怎么找呢
    mfanming
        6
    mfanming  
    OP
       2016-06-11 15:18:01 +08:00
    @popu111 目前是看源码,数据字典里查,然后写出来测试...感觉好慢
    Sunyanzi
        7
    Sunyanzi  
       2016-06-11 19:35:00 +08:00   ❤️ 2
    QueryLog 是我能想到的最优解决方案 ... 看到 @cevincheung 说了我就没冒泡 ...

    结果你说「没用过」然后就没下文了 ... 我能说你活该好慢吗 ...

    SET global general_log_file='/path/to/your/sql.log';
    SET global general_log = 1;

    修改第一行的路径为你存 log 文件的路径之后执行 ... 之后所有查询就都会被记录下来 ...

    MySQL 5.1 以上适用 ... 要停止记录执行 SET global general_log = 0; ... 或者重启也行 ...

    我是刚好闲着才写给你 ... 你之前没用过就一辈子不用了 ..? 就两行 SQL 而已有这么麻烦吗 ..?
    cevincheung
        8
    cevincheung  
       2016-06-11 19:38:06 +08:00   ❤️ 2
    @Sunyanzi

    另外一个,修改 dz 的 db 库,执行 query 的时候 append 文件也行。

    @mfanming
    别犯懒
    mfanming
        9
    mfanming  
    OP
       2016-06-12 12:20:06 +08:00
    @Sunyanzi
    谢谢,我差点放弃
    我的 mysql 版本是 5.5.38
    用的是入门级环境配置包 phpstudy
    用了你的命令,没成功,因为是 WIN 系统?
    又在网上找的下面这段,加上后重启电脑成功了
    log-error="G:/phpStudy/MySQL/log/error.log"
    general-log=1
    general-log-file="G:/phpStudy/MySQL/log/mysql.log"
    long_query_time=3
    slow_query_log=1
    slow-query-log_file="G:/phpStudy/MySQL/log/slowquery.log"

    再问个小白问题, QueryLog 是 mysql 命令么?
    mfanming
        10
    mfanming  
    OP
       2016-06-12 12:21:31 +08:00
    @cevincheung
    非主流程序员一枚,暂时解决了,不够用再考虑你的方法,谢谢
    Sunyanzi
        11
    Sunyanzi  
       2016-06-12 13:41:01 +08:00
    @mfanming QueryLog 不是 MySQL 命令 ... 你添加的这些内容都是 MySQL 的配置参数 ...

    以及解决就好 ... 说来我现在看我昨天的回复 ... 也不知道为什么当时说话就那么冲 ... 见谅见谅 ...
    mfanming
        12
    mfanming  
    OP
       2016-06-12 17:33:24 +08:00
    @Sunyanzi 感谢耐心解答,我是运营出身做点技术,小白问题比较多,啦啦啦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3797 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:36 · PVG 18:36 · LAX 02:36 · JFK 05:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.