1. 程式人生 > >Odoo升級崩潰解決方案。

Odoo升級崩潰解決方案。

上線前備份資料庫1️⃣檢視並分析剖該原因。    a,找不到模組或檢視不存在。        解決方案:檢視是否將相應py檔案加入到__init__檔案中,或xml檔案加入到manifest->data檔案中。
    b, 找不到關聯模組。
        解決方案:這種一般要麼很簡單,要麼很複雜。
            先將關聯模組加入到manifest->depends中,升級
            如果依然報錯,在用到此模型的py檔案中加入繼承此模型的類
            如果還不行,檢查2個模組是否被相互繼承,檢查繼承順序。
            如果還不行,嘗試重寫被繼承模型,將模型剝離出原模組。
    c, 檢視錯誤,或欄位錯誤。        解決方案:一般這種為低端錯誤,很容易排查,檢查關聯模型是否存在,檢查欄位是否存在。
    d, 重啟直接崩潰,無法進行介面升級。
        解決方案:命令列重啟升級一般能夠解決。
            重啟命令加 -u 需要升級的模組。
            如果還是炸,資料庫將自動重啟升級結束。
            update ir_module_module set state = 'installed
’ where state = 'to upgrade'
            然後再重啟,解決問題後再進行升級。
    e, 升級卡死
        解決方案:線上升級卡死可能由於3種原因,1程式碼問題,常常發生在新加欄位,ondepends欄位,complate欄位。2,繼承問題。3,多程序資料庫死鎖問題。本地只有1,2兩種原因。
        1解決方案,儘量在新新增欄位時不要加入資料庫約束,比如說非空。儘量不要在新加欄位上加入depends和complate進行計算。如果沒辦法越過上述問題,那麼要麼等待程式計算完成,要麼檢視欄位是否新增成功,新增成功後直接重啟,sql更新資料。
        2解決方案,參考b解決方案        3解決方案,上線前保證儘量少的線上使用者操作。但是肯定還是會發生的,那麼下面這條SQL可能可以救命。
select 
pg_terminate_backend(pid) from pg_stat_activity where (now() - backend_start) > '00:01:00' and pid != (select pg_backend_pid()); --強殺連線超過1分鐘的事務 不要殺死自己的程序