2013-12-18 2 views
0

У меня возникла ошибка при переиндексации данных. Я работаю около 3 дней с этой проблемой, пока не могу найти решение. вот ошибка журнала, которую я получил:Как исправить ошибку magento с ошибкой PDOException?

Значение индекса по умолчанию (MANAdev) неизвестная ошибка: исключение «PDOException» с сообщением «SQLSTATE [23000]: нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: a внешнего ключа не выполняется (glasseso_magento. m_filter2_value, скованность FK_m_filter2_value_mana_db?edit_session FOREIGN KEY (edit_session_id) Лит m_edit_session (id) ON DELETE CASCADE ON UPDATE Cascad)»в /Applications/MAMP/htdocs/magestore/lib/Zend/Db/Statement/Pdo.php : 228 Стек след:

0 /Applications/MAMP/htdocs/magestore/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement-> выполнить (Arra у)

1 /Applications/MAMP/htdocs/magestore/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo -> _ выполнение (Array)

2/Применения/MAMP/HTDOCS/magestore/Библиотека/Zend/Db/Statement.php (300): Varien_Db_Statement_Pdo_Mysql -> _ выполнения (массив)

3 /Applications/MAMP/htdocs/magestore/lib/Zend/Db/Adapter/Abstract.php (479): Zend_Db_Statement-> Execute (массив)

4 /Applications/MAMP/htdocs/magestore/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract-> запрос ("INSERT INTO` m _... ', Array)

5 /Applications/MAMP/htdocs/magestore/lib/Varien/Db/Adapter/Pdo/Mysql.php(419): Zend_Db_Adapter_Pdo_Abstract-> запрос ('INSERT INTO `м _...', Array)

6 /Applications/MAMP/htdocs/magestore/lib/Zend/Db/Adapter/Abstract.php(574): Varien_Db_Adapter_Pdo_Mysql-> запрос ('INSERT INTO `м _...', массив)

7/Приложения/MAMP/htdocs/magestore/app/code/core/Mage/Core/Model/Resource/Db/Abstract.php (453): Zend_Db_Adapter_Abstract-> insert ('m_filter2_value', Array)

8/Применения/MAMP/htdocs/magestore/app/code/core/Mage/Core/Model/Abstract.php (318): Mage_Core_Model _Resource_Db_Abstract-> Save (Object (Mana_Filters_Model_Filter2_Value))

9 /Applications/MAMP/htdocs/magestore/app/code/local/Mana/Db/Helper/Data.php(217): Mage_Core_Model_Abstract-> Сохранить()

10 /Applications/MAMP/htdocs/magestore/app/code/local/Mana/Db/Model/Indexer.php(36): Mana_Db_Helper_Data-> реплицироваться()

11/Применения/MAMP/HTDOCS/magestore/app/code/core/Mage/Index/Model/Process.php (209): Mana_Db_Model_Indexer-> reindexAll()

12/Приложения/MAMP/htdocs/magestore/app/code/core/Mage/Index /Model/Process.php(255): Маг _Index_Model_Process-> reindexAll()

13 /Applications/MAMP/htdocs/magestore/shell/indexer.php(158): Mage_Index_Model_Process-> reindexEverything()

14/Applications/MAMP/HTDOCS/magestore/оболочки/индексатор.PHP (198): Mage_Shell_Compiler-> бег()

15 {главная}

Следующая исключением 'Zend_Db_Statement_Exception' с сообщением «SQLSTATE [23000]: Integrity нарушение ограничения: 1452 Невозможно добавить или обновить дочернюю строку: а внешнего ключа не выполняется (glasseso_magento. m_filter2_value, скованность FK_m_filter2_value_mana_db?edit_session FOREIGN KEY (edit_session_id) Лит m_edit_session (id) ON DELETE CASCADE ON UPDATE Cascad)»в /Applications/MAMP/htdocs/magestore/lib/Zend/Db/Statement/Pdo.php : 234 Трассировка стека:

0/Применения/MAMP/htdocs/magestore/lib/Varien/Db/Заявление/PDO/Mysql.php (110): Zend_Db_Statement_Pdo -> _ выполнения (массив)

1 /Applications/MAMP/htdocs/magestore/lib/Zend/Db/Statement.php(300): Varien_Db_Statement_Pdo_Mysql -> _ казнить (Array)

2 /Applications/MAMP/htdocs/magestore/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement-> выполнить (Array)

3/Применения/MAMP/htdocs/magestore/lib/Zend/Db/Adapter/Pdo/Abstract.php (238): Zend_Db_Adapter_Abstract-> query ('INSERT INTO `m _...', Array)

4/Applications/MAMP/HTDOCS/magestore/Библиотека/Varien/Db/Adapter/PDO/Mysql.p л.с. (419): Zend_Db_Adapter_Pdo_Abstract-> запрос ('INSERT INTO `м _...', массив)

5 /Applications/MAMP/htdocs/magestore/lib/Zend/Db/Adapter/Abstract.php(574) : Varien_Db_Adapter_Pdo_Mysql-> query ('INSERT INTO `m _...', Array)

6/Приложения/MAMP/htdocs/magestore/app/code/core/Mage/Core/Model/Resource/Db/Abstract. PHP (453): Zend_Db_Adapter_Abstract-> вставить ('m_filter2_value', array)

7 /Applications/MAMP/htdocs/magestore/app/code/core/Mage/Core/Model/Abstract.php(318): Mage_Core_Model_Resource_Db_Abstract -> save (Объект (Mana_Filters_Model_Filter2_Value))

8 /Applications/MAMP/htdocs/magestore/app/code/local/Mana/Db/Helper/Data.php(217): Mage_Core_Model_Abstract-> Сохранить()

9/Applications/MAMP/HTDOCS/magestore/app/code/local/Mana/Db/Model/Indexer.php (36): Mana_Db_Helper_Data-> replicate()

10/Применения/MAMP/htdocs/magestore/app/code/core/Mage/Index/Model /Process.php(209): Mana_Db_Model_Indexer-> reindexAll()

11 /Applications/MAMP/htdocs/magestore/app/code/core/Mage/Index/Model/Process.php(255): Mage_Index_Model_Process-> reindexAll()

12/Applica ЦИИ/MAMP/HTDOCS/magestore/оболочка/indexer.php (158): Mage_Index_Model_Process-> reindexEverything()

13 /Applications/MAMP/htdocs/magestore/shell/indexer.php(198): Mage_Shell_Compiler-> Run()

14 {главная}

Надеется, что кто-то может помочь мне в этом вопросе. Спасибо.

ответ

0

Быстрое решение заключается в том, чтобы поймать Исключение и зарегистрировать его, поэтому индекер может завершить свою работу.

Может быть, попытка поймать {} {} Блок подходит здесь:

Applications/MAMP/htdocs/magestore/app/code/local/Mana/Db/Helper/Data.php(217): Mage_Core_Model_Abstract->save()

Причина исключения может быть найден в неустойчивой реализации Mana-модуле.

+0

Что вы подразумеваете под «непоследовательной реализацией»? –

1

Хорошим решением может быть отключение «проверки внешнего ключа». В файле /app/code/local/Mana/Db/Helper/Data.php (217) ...

Изменить это:

$object->save(); 

Для этого:

$resource = Mage::getSingleton('core/resource'); 
$writeConnection = $resource->getConnection('core_write'); 
$writeConnection->query("SET FOREIGN_KEY_CHECKS = 0;"); 
$object->save(); 
$writeConnection->query("SET FOREIGN_KEY_CHECKS = 1;"); 

Успехов !

2

Я просмотрел содержимое m_edit_session, и была только одна строка с идентификатором 1 и меткой времени в файле created_at. Я изменил идентификатор этой и единственной строки на 0 (вместо 1), и эта ошибка исчезла.

+0

Это исправило проблему для меня! Я предполагаю, что это потому, что я дублировал базу данных, так как были другие части, которые меняли идентификатор от 0 до 1, например, управление пользователями. Весьма раздражает то, что дублирование базы данных не сохраняет целостность идентификатора. – Karl

Смежные вопросы