我目前正在为现有数据库结构开发 Class::DBI 的大型实现,并且在清除 Class::DBI 缓存时遇到问题。这是一个 mod_perl 实现,因此类的实例在两次访问之间可能已经很旧了。 从手册页中我发现了两个选项:
Music::DBI->clear_object_index();
还有:
Music::Artist->purge_object_index_every(2000);
现在,当我将clear_object_index() 添加到 DESTROY 方法时,它似乎在运行,但实际上并没有清空缓存。我可以手动更改数据库,重新运行请求,但它仍然是旧版本。 purge_object_index_every 表示每 n 个请求清除索引。将其设置为“1”或“0”,似乎有时会清除索引。我希望这两者之一能够发挥作用,但由于某种原因,它并不每次都能发挥作用。大约五分之一。
有什么建议可以解决这个问题吗?
最佳答案
common problems 上的“Class::DBI wiki”页面有一个section关于这个话题。最简单的解决方案是完全禁用事件对象索引:
$Class::DBI::Weaken_Is_Available = 0;
关于perl - 如何清除 Class::DBI 的内部缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35480/