首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Dspam 運維錯誤排查:Duplicate entry 與 Incorrect key file 解決方案

     編輯:PHP 相關知識

錯誤現象

Apr 10 07:03:19 mail dspam[1468]: query error: Duplicate entry '1-2288815384906775934' for key 'id_token_data_01'
Apr 10 07:03:19 mail dspam[1468]: bailing on error -2
Apr 10 07:03:19 mail dspam[1468]: received invalid result (!DSR_ISSPAM && !DSR_ISINNOCENT): -2
Apr 10 07:03:19 mail dspam[1468]: process_message returned error -5. delivering.

MySQL 錯誤:Incorrect key file for table

根因分析

dspam_token_data 表的 token 欄位出現重複值,導致主鍵/唯一索引衝突。Dspam 寫入 token 時未處理衝突,造成服務異常。

解決方案一:不保留舊資料(快速恢復)

  1. 停止服務:service dspamd stop
  2. 清空 dspam_token_data 表所有資料
  3. 於 token 欄位建立主鍵(防止未來重複)
  4. 重啟服務:service dspamd start

解決方案二:保留舊資料並去重

  1. 停止服務:service dspamd stop
  2. 將 dspam_token_data 匯出為逗號分隔文字檔(避免 Excel 自動科學記號導致 token 尾數歸零)
  3. 用 Excel 開啟,將 token 欄位設為「文字」格式
  4. 使用「資料」→「移除重複值」功能去重
  5. 清空資料表,匯入去重後資料
  6. 於 token 建立主鍵
  7. 重啟服務

關鍵提醒

  • 匯出時務必選「文字檔(CSV)」,勿直接存為 .xlsx,否則長數值會變科學記號(如 2288815384906775934 → 2.2888E+18)導致資料損壞
  • 建立主鍵後,未來寫入重複 token 會直接報錯,需於 Dspam 端或應用層處理衝突邏輯
  • 定期監控 dspam_token_data 表大小與索引碎片,必要時 OPTIMIZE TABLE
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved