Magento Backend 404 สำหรับขอบเขตการกำหนดค่า“ เว็บไซต์” ทั้งหมดสองรายการ


14

ใน 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ตาราง


ฉันต้องถามแล้วคุณเคยจัดทำดัชนี URL หรือไม่เมื่อคุณเปลี่ยนแปลงทุกอย่าง
Anthony Cicchelli

เฮ้ @AnthonyCicchelli ขอบคุณที่ถาม นี่เป็นหนึ่งในสิ่งแรกที่ฉันพยายามแก้ไขปัญหา แต่ไม่มีประโยชน์ :(
Ottonet

เป็นการยากที่จะบอกจากที่นี่เนื่องจากมีปัจจัยมากมายให้คุณชำระล้าง URL ทั้งหมดของคุณจากฐานข้อมูลแล้วเรียกใช้ URL อีกครั้ง เสียงที่เชื่อมโยงตามฉันมากระวังการทำงานโดยตรงกับฐานข้อมูลแบบนี้ ตรวจสอบให้แน่ใจว่าคุณมีข้อมูลสำรองไม่เช่นนั้นอาจทำให้ทุกอย่างเสียหาย
Anthony Cicchelli

ฉันค่อนข้างแน่ใจว่าไม่ใช่ปัญหา "ส่วนหน้า" (เช่น URL-index) แต่เป็นปัญหา "ส่วนหลัง" มากกว่าที่ใดในรหัสวีโอไอพี สำหรับฉันแล้วรู้สึกว่า Magento คาดว่าจะมีลำดับ / การรวมกันของ website_id / store_id ซึ่งหากคุณลบ id บางส่วน "ตรงกลาง" magento จะไม่สามารถจับคู่และโหลด website_id เหล่านั้นได้
Ottonet

คำตอบ:


2

ฉันมีปัญหาที่คล้ายกันในร้านค้าเว็บไซต์เดียวและแก้ไขด้วยคำถามต่อไปนี้

SET SQL_SAFE_UPDATES=0;
SET FOREIGN_KEY_CHECKS=0;
UPDATE `core_store` SET store_id = 0 WHERE code='admin';
UPDATE `core_store_group` SET group_id = 0 WHERE name='Default';
UPDATE `core_website` SET website_id = 0 WHERE code='admin';
UPDATE `customer_group` SET customer_group_id = 0 WHERE customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHECKS=1;
SET SQL_SAFE_UPDATES=1;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.