IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Ecstore中的dbschema缓存文件存放位置以及文件名生成规则

    tiandi发表于 2015-11-19 03:29:34
    love 0

    Ecstore每一个app下都有dbschema文件,用于结构化数据表,通常在执行cmd update时,会先检查dbschema下的文件是否有改动,有的话,会根据改动update表结构,并且生成表结构的缓存文件,但是也有蛋疼的时候,执行cmd update时,数据表结构确没有得到更新,官方也承认有这种BUG存在的情况,一直没有给予彻底解决。tiandi没有用update机制,随便瞎猜测是dbschema缓存文件没有清除导致的这种BUG。

    那么它的缓存文件存在哪呢?

    Ecstore的缓存文件有的存在php里的tmp目录,有的存在/data下,各种机制,各种cache,各种kvstore,反正你要是不具体深入了解的话,肯定会抓狂的。这里,dbschema的缓存文件就存在/data/kvstore/tbdefine下,切换到该目录下,能看到许多MD5命名的php文件,如何找到对应的文件名呢?用下面的代码即可找到,

    //DB_PREFIX为config里的DB_PREFIX
    //KEY的算法是,该dbschema的表名去除前缀后,再去除中间的连接符号所得的字符串,如表名为sdb_gift_card,则取值giftcard。
    $file = ROOT_PATH."data/kvstore/tbdefine/".md5(trim(DB_PREFIX) . "tbdefine" . trim(KEY)).".php";
    

    这样找到文件后,就可以手动删除dbschema的缓存文件,问题也就迎刃而解了。

    另外你也可以和tiandi一样做成界面来删除该文件。

    kv_dbschema_ecstore

    文章评分2次,平均分5.0:★★★★★


沪ICP备19023445号-2号
友情链接