首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >acts_as_xapian作业表

acts_as_xapian作业表
EN

Stack Overflow用户
提问于 2009-06-04 14:31:32
回答 1查看 260关注 0票数 0

有人能给我解释一下acts_as_xapian_jobs表的内部工作原理吗?

我最近遇到了一个关于acts_as_xapian插件的问题,当它创建一个带有xapian索引字段的对象时,我一直收到以下错误:

代码语言:javascript
复制
Mysql::Error: Duplicate entry 'String-2147483647' for key 2: 
INSERT INTO `acts_as_xapian_jobs` (`action`, `model`, `model_id`) 
VALUES ('update', 'String', 23730251831560)

结果发现model_id超过了最大整数值2147483647。解决方法是将model_id更新为使用bigint。为什么model_id会这么大?通过查看acts_as_xapian_jobs的内容,它似乎为每个被索引的字段创建了一行。理解如何在表中创建作业将会有很大帮助。

以下是该表的示例:

代码语言:javascript
复制
mysql> select * from acts_as_xapian_jobs limit 5\G
*************************** 1. row ***************************
      id: 19
   model: String
model_id: 23804037900560
  action: update
*************************** 2. row ***************************
      id: 49
   model: String
model_id: 23804037191200
  action: update
*************************** 3. row ***************************
      id: 79
   model: String
model_id: 23804037932180
  action: update
*************************** 4. row ***************************
      id: 109
   model: String
model_id: 23804037101700
  action: update
*************************** 5. row ***************************
      id: 139
   model: String
model_id: 23804037722160
  action: update

提前谢谢你,

Amie

EN

回答 1

Stack Overflow用户

发布于 2010-03-12 16:22:03

我最近发现了acts_as_xapian,并且一直在尝试使用它。似乎acts_as_xapian_jobs表在任何时候更改模型时都会更新。然后,Xapian索引实际上会在下一次运行rake xapian:update_index时更新。

因此,acts_as_xapian_jobs表基本上只包含模型中需要重新索引的记录的in。据我所知,只有当您的模型发生更改时,记录才会添加到表中,所以--您是否正在更改/更新数据库中的大量条目?这可能是您溢出最大int值的原因。

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/950969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档