【问题标题】:Magento Cronjob Import: "Error in data structure: entity codes are mixed"Magento Cronjob 导入:“数据结构错误:实体代码混合”
【发布时间】:2014-10-09 12:32:32
【问题描述】:

我构建了一个 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_importdata”表,它是空的。

我确实删除了几次缓存。

【问题讨论】:

  • 尝试删除缓存,有时会出问题

标签: magento import cron magento-1.7


【解决方案1】:

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

消息Error in data structure: behaviors are mixed来自班级

Mage_ImportExport_Model_Resource_Import_Data

与表importexport_importdata中的数据有关。

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

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

解决办法:

很简单,删除importexport_importdata表中的所有记录,然后再次尝试执行导入过程。

【讨论】:

    【解决方案2】:

    我已经看到这个错误出现在你有一个 READ / WRITE 拆分连接到不同数据库的环境中。我也在 AWS Aurora 上看到过。如果您移回 default_setup,错误就会消失

    这里也有报道:https://github.com/avstudnitz/AvS_FastSimpleImport/issues/29

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2017-12-29
        • 1970-01-01
        • 1970-01-01
        • 2013-06-22
        • 2016-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多