Magento Cronjob导入:“;数据结构错误:实体代码混合;

Magento Cronjob导入:“;数据结构错误:实体代码混合;,magento,import,cron,magento-1.7,Magento,Import,Cron,Magento 1.7,我构建了一个cronjob,可以在夜间自动将产品导入我的Magento 1.7.0.2商店 我的导入工作得很好,只是可配置文章与其选项之间的连接没有正确更新,如果可配置文章已经存在的话 因此,我在脚本中添加了一些代码,这将在导入之前删除要导入的文章 突然发生了以下错误: exception 'Mage_Core_Exception' with message 'Error in data structure: entity codes are mixed' in /var/www/vhosts/

我构建了一个cronjob,可以在夜间自动将产品导入我的Magento 1.7.0.2商店

我的导入工作得很好,只是可配置文章与其选项之间的连接没有正确更新,如果可配置文章已经存在的话

因此,我在脚本中添加了一些代码,这将在导入之前删除要导入的文章

突然发生了以下错误:

exception 'Mage_Core_Exception' with message 'Error in data structure: entity codes are mixed' in /var/www/vhosts/my-domain.de/httpdocs/app/Mage.php:594
Stack trace:
#0 /var/www/vhosts/my-domain.de/httpdocs/app/code/core/Mage/ImportExport/Model/Resource/Import/Data.php(119): Mage::throwException('Error in data s...')
#1 /var/www/vhosts/my-domain.de/httpdocs/app/code/core/Mage/ImportExport/Model/Import.php(326): Mage_ImportExport_Model_Resource_Import_Data->getEntityTypeCode()
#2 /var/www/vhosts/my-domain.de/httpdocs/app/code/local/Webda/Import/Model/Observer.php(88): Mage_ImportExport_Model_Import->importSource()
#3 [internal function]: Webda_Import_Model_Observer->doImport(Object(Aoe_Scheduler_Model_Schedule))
#4 /var/www/vhosts/my-domain.de/httpdocs/app/code/community/Aoe/Scheduler/Model/Observer.php(79): call_user_func_array(Array, Array)
#5 /var/www/vhosts/my-domain.de/httpdocs/app/code/core/Mage/Core/Model/App.php(1338): Aoe_Scheduler_Model_Observer->dispatch(Object(Varien_Event_Observer))
#6 /var/www/vhosts/my-domain.de/httpdocs/app/code/core/Mage/Core/Model/App.php(1317): Mage_Core_Model_App->_callObserverMethod(Object(Aoe_Scheduler_Model_Observer), 'dispatch', Object(Varien_Event_Observer))
#7 /var/www/vhosts/my-domain.de/httpdocs/app/Mage.php(447): Mage_Core_Model_App->dispatchEvent('default', Array)
#8 /var/www/vhosts/my-domain.de/httpdocs/cron.php(46): Mage::dispatchEvent('default')
#9 {main}
因此,当然,我撤销了所有最新的更改,但错误仍然存在

有趣的事实: 如果我在AOE调度程序中启动cronjob,无论有没有最新的更改,它都可以正常工作

因此,我可以明确地说,实施不是问题所在

我确实检查了表“importexport\u importdata”,它是空的

我确实删除了缓存好几次

这似乎是一个老问题,但为了防止其他人面临这个问题,我分享我的经验

数据结构中的消息
错误:行为混合
来自类

Mage\u ImportExport\u Model\u Resource\u Import\u Data

它与表
importexport\u importdata
中的数据相关

在导入过程中,Magento将数据存储在此表中

有时,当导入过程失败或被用户停止时,此表中的数据会损坏

解决方案:


它非常简单,只需删除
importexport\u importdata表中的所有记录,然后再次尝试执行导入过程。

我看到在对不同数据库进行读/写分离连接的环境中出现此错误。我也在AWS Aurora上看过。如果移回默认的\u设置,错误将消失

这里也有报道:

更新M2

调用\Magento\ImportExport\Model\ResourceModel\Import\Data::getUniqueColumnData时会发生这种情况。此函数期望返回单个值。如果有多个值,则会出错

这主要是由于作业中断时importexport_importdata中的剩余数据造成的。该表只是在作业处理时临时保存数据。因此,如果您没有运行导入,您可以假定数据是剩余的。这主要是由第三方导入模块引起的,而不是默认的magento

   /**
     * Return request data from import data table
     *
     * @param string $code parameter name
     * @return string
     * @throws \Magento\Framework\Exception\LocalizedException
     */
    public function getUniqueColumnData($code)
    {
        $connection = $this->getConnection();
        $values = array_unique($connection->fetchCol($connection->select()->from($this->getMainTable(), [$code])));

        if (count($values) != 1) {
            throw new \Magento\Framework\Exception\LocalizedException(
                __('Error in data structure: %1 values are mixed', $code)
            );
        }
        return $values[0];
    }

尝试删除缓存,有时可能会出现问题