Уникальное нарушение ограничений при обновлении Magento 1.4.0 до 1.6.2.0

Я выполняю обновление на существующем сайте Magento. Примерно через 10 минут Magento сообщает об исключении, и когда я проверяю файл отчета об ошибке в / var / report, я вижу следующее сообщение об ошибке и дамп стека:

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";}

Общий совет в другом месте в Интернете - изменить < initStatements> в app / etc / config.xml читать:

<initStatements>SET NAMES utf8; SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0;</initStatements>

Однако отключение системы ограничений целостности баз данных - это гарантированный путь к невероятно трудным для поддержки и устранения неполадок в дальнейшем. Это хитрость, которая заставляет скрипт обновления не вылетать из-за ошибки, на самом деле он НЕ решает проблему каким-либо образом.

Может ли сообщество StackOverflow предложить лучшее решение или хорошее объяснение того, почему отключение проверки целостности в MySQL является хорошей идеей?

11
задан Jim OHalloran 1 April 2014 в 06:25
поделиться