Magento Backend 404 per tutti tranne due ambiti di configurazione "Sito Web"


14

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 codecampo nella core_websitetabella.

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 storeviewinvece 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_idciò che carica bene c'è un store_idcon lo stesso numero. website_id 1e si 4stanno caricando come previsto, e in effetti ci sono (non correlati) store_id 1e 4definiti.

Per website_id 3, 6, 7, 8e 9non v'è no store_idcon lo stesso numero.

Tuttavia, una volta che ho creato una voce falsastore_id , ad esempio 3, caricando l'ambito della configurazione , ho website_id 3ricominciato 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 6carica senza bisogno di un store_id 6nella core_storetabella.


Devo chiedere, hai eseguito l'indicizzazione degli URL quando hai cambiato tutto?
Anthony Cicchelli,

Ehi, @AnthonyCicchelli, grazie per avermelo chiesto. Questa è stata in realtà una delle prime cose che ho provato a risolvere il problema, ma inutilmente :(
Ottonet

È difficile dirlo da qui poiché ci sono molti fattori, hai cancellato tutto il tuo URL dal DB e riesegui l'URL. Sembra collegato in base a me. SIA MOLTO attento a lavorare direttamente con il DB come quello sopra. Assicurati di avere un backup altrimenti potrebbe rompere tutto.
Anthony Cicchelli,

Sono abbastanza sicuro che non sia un problema di "frontend" (ad es. Indice URL), ma piuttosto un problema di "backend", da qualche parte nel profondo del codice magento. Per me sembra che Magento si aspetti una certa sequenza / combinazione di website_id / store_id, dove se si rimuovono alcuni ID "nel mezzo", magento non è in grado di abbinare e caricare quelli website_id.
Ottonet,

Risposte:


2

Ho riscontrato un problema simile nello store di un sito Web e ho risolto la seguente domanda.

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;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.