ใน Multiwebsite / Multistore ของเรา (ดู) Magento 1.9.2.2 การกำหนดค่าหนึ่งในเว็บไซต์รวมถึงร้านค้าและมุมมองร้านค้าจะต้องถูกลบออก
ในขณะที่การลบตัวเองเป็นไปด้วยดี (ฉันได้ทำมาก่อน) ฉันได้ลงเอยด้วยแบ็กเอนด์ที่ 404 ถ้าคุณเปลี่ยนขอบเขตการกำหนดค่าปัจจุบันของคุณเป็นเว็บไซต์ใดก็ได้ยกเว้นสองเว็บไซต์
การเลือกขอบเขตการกำหนดค่าใหม่จะส่งผลให้มีการร้องขอ URL ต่อไปนี้ (เปลี่ยนเส้นทางผู้ดูแลระบบ + แป้น):
/index.php/mymageadmin/system_config/edit/section/dev/website/<WEBSITE>/key/1221231/
โดยที่<WEBSITE>
เท่ากับcode
ฟิลด์ในcore_website
ตาราง
ด้วยการเข้าสู่ระบบแบบสอบถาม mysql ฉันเห็นว่าทั้งสองเว็บไซต์ที่สามารถโหลดได้สำเร็จมีคำถามเหล่านี้เกี่ยวกับการเลือกเว็บไซต์ / storeview:
SELECT `main_table`.* FROM `core_config_data` AS `main_table` WHERE (`scope` = 'websites') AND (`scope_id` = '4') AND (`path` LIKE 'dev/%')
SELECT `core_website`.* FROM `core_website` WHERE (`core_website`.`code`='working_store_code')
เว็บไซต์อื่น ๆ ที่ให้ 404 เริ่มต้นด้วยการสืบค้นครั้งแรกที่เหมือนกัน - แต่แน่นอนว่าจะมี scope_id ที่แตกต่างกัน แต่ในการสืบค้นที่สอง Magento คิดว่ามันต้องมองหาขอบเขตstoreview
แทนwebsite
! ดูเหมือนว่าจะลองสองครั้ง
SELECT `main_table`.* FROM `core_config_data` AS `main_table` WHERE (`scope` = 'websites') AND (`scope_id` = '3') AND (`path` LIKE 'dev/%')
SELECT `core_store`.* FROM `core_store` WHERE (`core_store`.`store_id`=3) ORDER BY `sort_order` ASC
SELECT `core_store`.* FROM `core_store` WHERE (`core_store`.`store_id`=3) ORDER BY `sort_order` ASC
ตาราง core_website ของฉันมีลักษณะดังนี้:
website_id code sort_order default_group_id is_default
0 admin 0 0 0
1 working_one 1 1 1
3 failing_one 2 4 0
4 working_two 3 9 0
6 failing_two 4 16 0
7 failing_three 5 15 0
8 failing_four 6 17 0
9 failing_six 7 18 0
working_xxx = โหลดเหล่านี้ตกลง, failing_xxx = ให้ 404 / ลองเลือก store_id ที่ไม่มีอยู่
ตาราง core_store ของฉันมีลักษณะดังนี้: (ลบรหัส + ชื่อไม่เกี่ยวข้อง)
store_id website_id group_id sort_order is_active
0 0 0 0 1
1 1 1 0 1
4 3 4 1 1
5 3 4 2 1
10 4 9 0 1
19 7 15 0 1
20 4 9 1 1
21 4 9 2 1
22 4 9 4 0
23 6 16 1 1
24 6 16 2 1
26 4 9 4 1
28 7 15 0 1
29 1 1 2 1
30 8 17 0 1
31 9 18 0 1
32 9 18 0 1
33 8 17 2 1
34 8 17 3 1
35 8 17 4 1
36 4 9 10 1
และนี่คือ core_store_group:
group_id website_id name root_cat_id default_store_id
1 1 working_one 50 1
4 3 failing_one 44 4
9 4 working_one 77 10
15 7 failing_two 70 19
16 6 failing_three 46 23
17 8 failing_four 50 30
18 9 failing_five 96 31
ฉันได้เปรียบเทียบทั้งสามตารางนี้กับสำเนาสำรองของฐานข้อมูลก่อนที่ฉันจะลบเว็บไซต์ / storeview และ - ยกเว้นสำหรับการลบเว็บไซต์ / storeview ดังกล่าว - ทุกอย่างดูเหมือนกันหมด รหัสเดียวกัน, รหัสเดียวกัน ฯลฯ
เท่าที่ฉันรู้ตารางทั้งสามนี้เป็นตารางเดียวที่ Magento ตรวจสอบสำหรับรหัสร้านค้า / เว็บไซต์และรหัส
สำหรับการแก้ไขปัญหาฉันได้ทำสิ่งต่อไปนี้: เพื่อให้แน่ใจว่าไม่มีแคชที่มีการกำหนดค่าแบบเก่าที่เหลือ: var / cache ที่ว่างเปล่า, แคชที่ถูกล้างข้อมูล, ทำดัชนีใหม่, รีบูตเซิร์ฟเวอร์ ฯลฯ ฯลฯ ทั้งหมดไม่มีประโยชน์
แม้จะมีการล็อกออน php / magento ทั้งหมดโหมดผู้พัฒนาและอื่น ๆ ฉันก็ได้รับเบาะแสว่าทำไมสิ่งนี้ถึงเกิดขึ้น ไม่มีข้อยกเว้นถูกบันทึกไว้
ดังนั้นคำถามสองข้อคือ: เหตุใด Magento จึงพยายามเลือกขอบเขตมุมมองหน้าร้านที่ไม่มีอยู่แทนที่จะเป็นขอบเขตเว็บไซต์และวิธีแก้ไขปัญหานี้
อัปเดต 1 / วิธีแก้ปัญหา
หลังจากวันที่ยาวนานของการแก้ไขปัญหารวมถึง แต่ไม่ จำกัด เพียงเครื่องมือซ่อมแซม magento-db-repair สร้างตาราง core_store, core_store_group และ core_website ด้วยเว็บไซต์ดั้งเดิมและมุมมองร้านค้าในที่สุดฉันสังเกตเห็นสิ่งต่อไปนี้:
สำหรับการwebsite_id
โหลดที่ดีนั้นจะstore_id
มีจำนวนเท่ากัน website_id
1
และ4
กำลังโหลดตามที่คาดไว้และแน่นอนมี (ไม่เกี่ยวข้อง) store_id
1
และ4
กำหนดไว้
สำหรับwebsite_id
3
, 6
, 7
, 8
และ9
ไม่มีstore_id
มีหมายเลขเดียวกัน
แต่เมื่อฉันสร้างปลอมเข้าสู่store_id
ตัวอย่างเช่น3
โหลดขอบเขตของการกำหนดค่าwebsite_id
3
เริ่มต้นทำงานอีกครั้ง
ดังนั้นในขณะที่ฉันประสบความสำเร็จในการวางวิธีแก้ปัญหาในสถานที่ฉันได้จบลงด้วยการเพิ่มเว็บไซต์ (ปิดการใช้งาน) หนึ่งและมุมมองร้าน 5 (ปิดการใช้งาน)
เพื่อให้แน่ใจว่านี่ไม่ใช่ปัญหาก่อนหน้านี้ฉันได้ไปที่เว็บไซต์เก่าของเราที่ฉันเก็บไว้บนเซิร์ฟเวอร์ dev (เวอร์ชั่นเวอร์ชัน 1.9.1.0)
ที่นี่ทุกอย่างทำงานได้อย่างสมบูรณ์เช่นwebsite_id
6
โหลดโดยไม่จำเป็นต้องมีstore_id
6
ในcore_store
ตาราง