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一样做成界面来删除该文件。
文章评分4次,平均分4.8:★★★★☆
可以强制更新,–force-update-db
写的很不错~赞一个~~~~