2012年2月9日 星期四

PHP - CiviCRM 從 2.2 版升級到 4.1-beta3


當插入記錄失敗時,可能是因為外鍵的關係。
原本站台可能因為各種因素,導致資料不一致。
尤其是自己手癢去資料庫增刪記錄,沒有透過 CiviCRM 的操作介面。

例如,這兩張表:civicrm_mailing_event_queue , civicrm_email
所有的 email_id 在這兩張表都要同時存在。
但是執行下面這段 SQL 可以看到,在 civicrm_email 應該要有的 id 卻遺失了。

SELECT a.id, a.email_id, ce.id as ce_id
SELECT a.id, a.email_id, ce.id as ce_id
FROM civicrm_mailing_event_queue a
LEFT JOIN civicrm_email as ce ON ce.id=a.email_id
WHERE ce.id is null
LIMIT 10

再去看 civicrm_email 表,發現這裡真的沒有上面那些 id 。

這時可以手動新增一筆空白記錄,就可以把原本的外鍵設回去。
另外,email 也跟聯絡人有關。所以 email id 跟聯絡人的 id 也要對應。沒事真的不要隨便去資料庫亂刪資料,最好是透過網頁操作介面去處理。

話說回來,只要搞清楚資料表各項關聯,隨便你怎麼升級都可以。

沒有留言:

張貼留言