Nella nostra configurazione Magwe 1.9.2.2 Multiwebsite / Multistore (visualizza) è stato necessario rimuovere uno dei siti Web, inclusi store e viewview.
Mentre la rimozione stessa è andata bene (l'ho già fatto in precedenza), ho finito con un backend di 404 se cambi il tuo ambito di configurazione corrente con qualsiasi altro sito web.
La selezione di un nuovo ambito di configurazione genera una richiesta per il seguente URL (percorso admin + chiave modificati):
/index.php/mymageadmin/system_config/edit/section/dev/website/<WEBSITE>/key/1221231/
dove <WEBSITE>
è uguale al code
campo nella core_website
tabella.
Con la registrazione delle query mysql vedo che i due siti Web che possono essere caricati correttamente hanno queste domande per quanto riguarda la selezione del sito Web / 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')
Altri siti web che danno un 404 iniziano con la stessa prima query - ma ovviamente un scope_id diverso, ma nella seconda query Magento pensa che debba cercare un ambito storeview
invece di website
! In realtà sembra provare due volte.
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
La mia tabella core_website ha il seguente aspetto:
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 = carica OK, falling_xxx = dà 404 / prova a selezionare un store_id inesistente.
La mia tabella core_store ha il seguente aspetto: (codice + nome rimosso come non pertinente)
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
E questo è 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
Ho confrontato queste tre tabelle con la mia copia di backup del DB prima di rimuovere il sito Web / storeview e, fatta eccezione per la rimozione di detto sito Web / storeview, tutto sembra esattamente lo stesso. Stessi ID, stessi codici ecc.
Per quanto ne so, queste tre tabelle sono le uniche verificate da Magento per codice storeview / sito Web e ID.
Per quanto riguarda la risoluzione dei problemi, ho fatto quanto segue: Per garantire che nessuna cache con la vecchia configurazione fosse rimasta: svuotato var / cache, cache svuotate, reindicizzato, riavviato il server ecc., Tutto inutilmente.
Anche con tutti gli accessi php / magento, la modalità sviluppatore ecc., Non ottengo indizi sul perché questo accada. Non vengono registrate eccezioni.
Quindi le due domande sono: Perché Magento sta cercando di selezionare un ambito storeview inesistente invece dell'ambito del sito Web e come risolverlo?
Aggiornamento 1 / Soluzione alternativa
Dopo una lunga giornata di risoluzione dei problemi, incluso ma non limitato allo strumento magento-db-repair, ricreando le tabelle core_store, core_store_group e core_website, con tutti i siti Web originali e le visualizzazioni dello store, ho finalmente notato quanto segue:
Per tutto website_id
ciò che carica bene c'è un store_id
con lo stesso numero. website_id
1
e si 4
stanno caricando come previsto, e in effetti ci sono (non correlati) store_id
1
e 4
definiti.
Per website_id
3
, 6
, 7
, 8
e 9
non v'è no store_id
con lo stesso numero.
Tuttavia, una volta che ho creato una voce falsastore_id
, ad esempio 3
, caricando l'ambito della configurazione , ho website_id
3
ricominciato a funzionare.
Quindi, mentre ora ho messo a punto una soluzione alternativa, ho finito con un sito Web extra (disabilitato) e 5 visualizzazioni negozio (disabilitate) ...
Per essere sicuro che questo non fosse un problema prima, sono andato a una delle copie più vecchie del nostro sito che tengo sul mio server di sviluppo (magento versione 1.9.1.0).
Qui tutto funziona perfettamente, cioè si website_id
6
carica senza bisogno di un store_id
6
nella core_store
tabella.