誰かがacts_as_xapian_jobsテーブルの内部の仕組みを説明できますか?
最近、プラグインで問題がacts_as_xapian
発生しました。xapian インデックス付きフィールドを使用してオブジェクトを作成すると、次のエラーが発生し続けました。
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 の最大 int 値を超えていることが判明しました。回避策は、 model_id
bigint を使用するように更新することでした。なぜmodel_id
そんなに巨大になるのでしょうか?のコンテンツを見るとacts_as_xapian_jobs
、インデックスが作成されているすべてのフィールドに対して行が作成されているようです。テーブルでジョブが作成される方法を理解すると、非常に役立ちます。
テーブルのサンプルは次のとおりです。
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
前もって感謝します、
アミエ