perl - 如何清除 Class::DBI 的内部缓存?

标签 perl class-dbi

我目前正在为现有数据库结构开发 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/

相关文章:

perl - 如何识别记录是否被找到或创建:class::dbi find_or_create

带条件的单行 Ruby 多个语句

perl - 我在哪里可以找到 cpanfile 格式定义?

database - Class::DBI 的 future 是什么?

perl - 如何在 Class::DBI 中进行更新而不先选择记录?

perl - 有没有办法为 Class::DBI 缓存机制?

javascript - 在 Google Maps API 中显示多个 map 标记

regex - 分割字符串并附加第二个和第一个元素

regex - Perl 将 url 字符串转换为链接