由於內容暫存問題,所有頁面均出現錯誤404
本文針對Adobe Commerce內部部署和Adobe Commerce雲端基礎結構問題提供修正,當存取任何店面頁面或 Commerce Admin 時,您會收到404錯誤。
說明 description
受影響的產品和版本
- Adobe Commerce內部部署2.2.x、2.3.x
- 雲端基礎結構上的Adobe Commerce 2.2.x、2.3.x
問題
注意:本文不適用於您嘗試預覽測試更新時發生404錯誤的情況。 如果您遇到此問題,請開啟支援票證。
存取任何店面頁面或管理員使用Content Staging (使用Magento_Staging模組排程的存放區內容資產更新)執行作業後,會發生404錯誤(「糟糕,我們的錯誤……」頁面)。 例如,您可能會刪除有排程更新的產品,或移除排程更新的結束日期。
存放區內容資產包括:
- 產品
- 類別
- 目錄價格規則
- 購物車價格規則
- CMS頁面
- CMS區塊
- Widget
部分情況將在下面的「原因」一節中討論。
原因
資料庫(DB)中的flag資料表包含指向staging_update資料表的無效連結。
此問題與內容測試有關。 以下是兩種特定情況;請注意,可能有更多情況會觸發此問題。
案例1:正在刪除符合下列條件的商店內容資產:
- 已排程內容暫存的更新
- 更新有結束日期(即更新的資產恢復為先前版本的到期日)
- 更新的結束日期是過去的日期
同時,如果刪除的資產沒有排程更新的結束日期,則可能不會發生問題。
案例2:移除排定更新的結束日期/時間。
識別您的問題是否相關
若要識別您遇到的問題是否為本文所述的問題,請執行以下資料庫查詢:
SELECT f.flag_data >'$.current_version' as flag_version, (su.id IS NOT NULL) as update_exists
-> FROM flag f
-> LEFT JOIN staging_update su
-> ON su.id = f.flag_data >'$.current_version'
-> WHERE flag_code = 'staging';
如果查詢傳回update_exists值為「0」的表格,則資料庫中會存在指向staging_update表格的無效連結,而解決方案一節中描述的步驟將有助於解決此問題。 以下是查詢結果的範例,其update_exists值等於「0」:
flag_vesionupdate_exists156042732101 row in set (0.00 sec)
如果查詢傳回update_exists值為「1」的資料表或空白結果,則表示您的問題與中繼更新無關。 以下是查詢結果的範例,其update_exists值等於「1」:
flag_vesionupdate_exists15604273211 row in set (0.00 sec)
在此情況下,您可以參閱Site Down Troubleshooter以取得疑難排解想法。
解決方法 resolution
- 執行下列查詢以刪除
staging_update資料表的無效連結:DELETE FROM flag WHERE flag_code = 'staging';. - 等待cron工作執行(若設定正確,最多五分鐘後執行),或若未設定cron,則手動執行。
在修正無效連結後,應立即解決問題。 如果問題仍然存在,請提交支援票證。
相關閱讀
在Commerce實作行動手冊中修改資料庫資料表的最佳實務。
。