Zdaję sobie sprawę, że możesz użyć skryptów instalacyjnych dla własnego modułu, deklarując je w pliku etc / config.xml modułu w <global>
przestrzeni w następujący sposób:
<resources>
<catalog_setup>
<setup>
<module>Mage_Catalog</module>
<class>Mage_Catalog_Model_Resource_Setup</class>
</setup>
</catalog_setup>
</resources>
Niektóre moduły następnie używają pliku, mysql4-install-0.0.1.php
podczas gdy inne używają install-0.0.1.php
. Kiedy więc używam mysql4 przed nazwą pliku, a kiedy go nie używam?
Co też mogę zrobić, gdy mój skrypt instalacyjny nie działa, aby dowiedzieć się, dlaczego tak nie jest?
magento-1
configuration
sql
installation
setup
mpaepper
źródło
źródło
Odpowiedzi:
Od Magento 1.6 i nowszych nie musisz już używać mysql4 z powodu dodanej obsługi wielu RDBMS.
Aby dowiedzieć się, dlaczego nie działa, możesz sprawdzić wyjątek.log lub system.log, być może Magento nie mógł znaleźć klasy instalacji. Utworzenie skryptu instalacyjnego jest jednak dość proste.
Sprawdź także przewodnik Alana Storma: http://alanstorm.com/magento_setup_resources
źródło
Jako @erfan saif, magento ma obsługę wielu rdbms od wersji 1.6. Ale w prawdziwym świecie znam tylko backendy mysql.
Ważne jest, aby zrozumieć, że magento może mieć różne skrypty instalacji / aktualizacji / danych dla różnych backendów. Jeśli chcesz specjalnego typu indeksu obsługiwanego przez mysql, ale nie przez standardowy SQL, możesz zaimplementować skrypt mysql4-install-1.0.0.php. Jeśli twój skrypt jest ogólny, użyj install-1.0.0.php
Jeśli przyjrzysz się Mage_Core_Model_Resource_Setup, mogę znaleźć dwie interesujące rzeczy:
app / code / core / Mage / Core / Model / Resource / Setup.php: 488
Uważaj, jeśli nazwiesz skrypt
.sql
, jest on wywoływany bezpośrednio w bazie danych:Wolę matrycę („sadf”) na początku mojego pliku instalacyjnego / aktualizacyjnego, ponieważ mogę ją uruchomić wiele razy, jeśli zostanie wywołana, dzięki czemu mogę sprawdzić, czy wszystkie ustawione przeze mnie zmienne są poprawne, zanim cokolwiek zostanie zmienione w baza danych. Jeśli widzę „sadf” na ekranie, wiem, skrypt jest uruchomiony.
I ładuje magento (zamiast sadf), czas debugować, moje dwa standardowe błędy to:
sql/
zapomniany katalog , np.sql/install-1.0.0.php
Zamiastsql/my_module_setup/install-1.0.0.php
A ponieważ myślę, że tu pasuje, uważaj na nazwy zmiennych: http://blog.fabian-blechschmidt.de/articles/file-kills-setup-script.html
AKTUALIZACJA @ rouven-rieker dodana przez Twittera, że dane - i brakujący mysql4 - zostały dodane w Magento 1.6. Jeśli potrzebujesz kompatybilności wstecznej, bądź ostrożny!
źródło
Jeśli twój skrypt nie działa, powinieneś również sprawdzić, czy wersja modułów odpowiada wersji skryptu instalacyjnego.
źródło
Jeśli skrypt nie działa, zresetuj numer wersji w core_resource i opróżnij pamięć podręczną. Wydaje się, że Magento z wyprzedzeniem buforuje wersje i nie uruchamia skryptów instalacyjnych, gdy wszystkie pamięci podręczne są włączone. Ponieważ wszyscy pracujemy z wyłączoną pamięcią podręczną, możemy tego nie zauważyć, ale instalacja na stronie Live przez przesyłanie nie będzie działać, jeśli pamięć podręczna jest włączona.
źródło