Mamy ten problem atm:
Klient otrzymuje aktualizację swojego sklepu z CE 1.4 na CE 1.8. Aktualizacja plików przebiegła dobrze, a aktualizacja bazy danych przebiegła również dobrze na naszym komputerze programistycznym.
Kiedy próbujemy zaktualizować bazę danych klienta na jego komputerze na żywo (podłącz 1.8-Magento do bazy danych i otwórz ją w przeglądarce), proces wydaje się działać przez chwilę i kończy się błędem 500.
Dziennik błędów PHP jest pusty; ponieważ jest to host współdzielony, nie możemy zmienić ustawień apache ani mysql; hoster, chociaż „special im magento hosting”, nie chce zmieniać ustawień i mówi mi, że mógłbym dokończyć aktualizację bazy danych poprzez wielokrotne odświeżanie okna przeglądarki po wystąpieniu błędu 500, ponieważ magento zostanie następnie zaktualizowany w małych krokach . To może trwać kilka godzin.
Moje pytanie brzmi:
- Czy to prawda? Myślałem, że instrukcje SQL dotyczące aktualizacji baz danych zostaną opakowane w transakcję, aby można je było wycofać, jeśli coś pójdzie nie tak.
- Czy odpowiedź może dać wskazówkę, w której części kodu mogę znaleźć odpowiedź na to pytanie?
Dziękuję za Twój czas!
źródło
Odpowiedzi:
Twoje instynkty inżynieryjne są dobre, ale to, co dzieje się w prawdziwym świecie programowania startupów biznesowych, jest bardziej skomplikowane / brzydkie.
System zasobów instalacyjnych Magento nie zawija pojedynczych skryptów w transakcji. Powodów jest wiele, ale zawsze zakładałem, że głównym jest to, że Magento rozpoczęło życie związane bezpośrednio z MySQL, a wiele instrukcji / definicji danych (
ALTER TABLE
itp.) W MySQL powoduje niejawne zatwierdzenie .Podczas gdy znajdziesz indywidualny zasób konfiguracji czasami używaj transakcji.
sam system po prostu uruchamia skrypty i ma nadzieję na najlepsze.
Jeśli interesuje Cię kod, który uruchamia te zasoby, najlepsze miejsce na rozpoczęcie prawdopodobnie znajdziesz tutaj
_modifyResourceDb
Metoda to taka, która zawiera aktualne skrypty zasobów setupBardzo hackerskim rozwiązaniem tego problemu byłoby tymczasowe włamanie do rdzenia / pula kodów, które jawnie zakończyło się po 5-10 włączeniach, i uruchom je ponownie. Ograniczyłoby to szansę na awarię skryptu konfiguracji w połowie.
Lepszym rozwiązaniem, a jednym z moich osobistych projektów „może pewnego dnia” byłby niestandardowy skrypt, który wykorzystywał podstawowe metody Magento do sprawdzania aktualizacji, które należy zastosować, ich listę i pozwalania użytkownikom na ich przeglądanie jeden po drugim.
źródło