Uaktualniam istniejącą witrynę Magento. Po około 10 minutach, Magento zgłasza wyjątek, a kiedy sprawdzić plik raportu o błędzie w/var/raport widzę następujący komunikat o błędzie i stosu zrzutu:Unikalne naruszenie ograniczeń w uaktualnieniu Magento 1.4.0 do 1.6.2.0
a:5:{i:0;s:223:"Error in file: "/var/www/vhosts/mymagesite/app/code/core/Mage/Customer/sql/customer_setup/mysql4-upgrade-1.5.9.9-1.6.0.0.php" - SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0-8' for key 'UNQ_BY_CUSTOMER'";i:1;s:952:"#0 /var/www/vhosts/mymagesite/app/code/core/Mage/Core/Model/Resource/Setup.php(645): Mage::exception('Mage_Core', 'Error in file: ...')
#1 /var/www/vhosts/mymagesite/app/code/core/Mage/Core/Model/Resource/Setup.php(437): Mage_Core_Model_Resource_Setup->_modifyResourceDb('upgrade', '1.4.0.0.7', '1.6.1.0')
#2 /var/www/vhosts/mymagesite/app/code/core/Mage/Core/Model/Resource/Setup.php(320): Mage_Core_Model_Resource_Setup->_upgradeResourceDb('1.4.0.0.7', '1.6.1.0')
#3 /var/www/vhosts/mymagesite/app/code/core/Mage/Core/Model/Resource/Setup.php(235): Mage_Core_Model_Resource_Setup->applyUpdates()
#4 /var/www/vhosts/mymagesite/app/code/core/Mage/Core/Model/App.php(412): Mage_Core_Model_Resource_Setup::applyAllUpdates()
#5 /var/www/vhosts/mymagesite/app/code/core/Mage/Core/Model/App.php(338): Mage_Core_Model_App->_initModules()
#6 /var/www/vhosts/mymagesite/app/Mage.php(640): Mage_Core_Model_App->run(Array)
#7 /var/www/vhosts/mymagesite/index.php(80): Mage::run('default', 'store')
#8 {main}";s:3:"url";s:16:"/index.php/admin";s:11:"script_name";s:10:"/index.php";s:4:"skin";s:7:"default";}
Ogólna rada gdzie indziej w Internecie jest do zmiany <initStatements>
w app/etc/config.xml
czytać:
<initStatements>SET NAMES utf8; SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0;</initStatements>
jednak uszkodzenia bazy danych systemu integralność ograniczeniem jest gwarantowana droga do niezwykle trudne do obsługi i rozwiązywania problemów później. Jest to hack, który sprawia, że skrypt aktualizacji nie ulega awarii z powodu błędu, w rzeczywistości NIE naprawia problemu w żaden sposób w kształcie lub formie.
Czy społeczność StackOverflow może pomóc w znalezieniu lepszego rozwiązania lub dobrym wyjaśnieniem, dlaczego wyłączenie sprawdzania integralności w MySQL jest dobrym pomysłem?
wyłączono wszystkie rozszerzenia przywrócone do domyślnego motywu w czasie aktualizacji? –
Nie wyłączyłem rozszerzeń lub przywróciłem domyślny motyw. Nie jestem pewien, jak to może rozwiązać ten problem. Jeśli rozszerzenia stron trzecich spowodowały ten błąd, to "uszkodzenie" zostało już zrobione w bazie danych, a wyłączenie ich nie spowoduje cofnięcia. –
Hej Jim :) Powodem, dla którego należy je wyłączyć, jest sposób, w jaki rozszerzenia zwykle działają. Sposób Magento polega na rozszerzaniu i przepisywaniu, jeśli trzeba coś zmienić, a rozszerzenia przepisują pewną wersję magento i nie aktualizują jej do najnowszych wersji.Więc w zasadzie błąd polega na tym, że rozszerzenie przepisuje coś, a magento zaktualizował tę część = konflikt –