未捕获的错误:无法实例化接口IndexTableRowSizeEstimatorInterface

时间:2019-01-23 09:55:13

标签: magento magento2 magento2.2

我要将magento 2.1.9升级到magento 2.2.7。 重新编录catalog_category_product时,会引发此错误:

[23-Jan-2019 09:49:39 UTC] PHP Fatal error:  Uncaught Error: Cannot instantiate interface Magento\Framework\Indexer\IndexTableRowSizeEstimatorInterface in /home/don/Web/fabelio22/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:111
Stack trace:
#0 /home/don/Web/fabelio22/vendor/magento/framework/ObjectManager/Factory/Compiled.php(108): Magento\Framework\ObjectManager\Factory\AbstractFactory->createObject('Magento\\Framewo...', Array)
#1 /home/don/Web/fabelio22/vendor/magento/framework/ObjectManager/Factory/Compiled.php(150): Magento\Framework\ObjectManager\Factory\Compiled->create('Magento\\Framewo...')
#2 /home/don/Web/fabelio22/vendor/magento/framework/ObjectManager/Factory/Compiled.php(79): Magento\Framework\ObjectManager\Factory\Compiled->get('Magento\\Framewo...')
#3 /home/don/Web/fabelio22/vendor/magento/framework/ObjectManager/ObjectManager.php(70): Magento\Framework\ObjectManager\Factory\Compiled->create('Magento\\Framewo...')
#4 /home/don/Web/fabelio22/vendor/magento/module-catalog/Model/Indexer/Category/Product/Action/Full.ph in /home/don/Web/fabelio22/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php on line 111

Magento_Catalog中的di.xml是

<type name="Magento\Catalog\Model\Indexer\Category\Product\Action\Full">
   <arguments>
      <argument name="batchRowsCount" xsi:type="number">100000</argument>
      <argument name="batchSizeManagement" xsi:type="object">Magento\Catalog\Model\Indexer\CategoryProductBatchSize</argument>
   </arguments>
</type>
<virtualType name="Magento\Catalog\Model\Indexer\CategoryProductBatchSize" type="Magento\Framework\Indexer\BatchSizeManagement">
   <arguments>
      <argument name="rowSizeEstimator" xsi:type="object">Magento\Catalog\Model\Indexer\Category\Product\RowSizeEstimator</argument>
   </arguments>
</virtualType>

但是$ rowSizeEstimator没有注入正确的类,而是尝试实例化\ Magento \ Framework \ Indexer \ IndexTableRowSizeEstimatorInterface。 generate / metadata / global.php已生成,但是就像Magento忽略了已编译的di文件。

2 个答案:

答案 0 :(得分:1)

尝试清除缓存和生成目录。

  1. 清除var/generation
  2. 清除var/cache
  3. 运行bin/magento setup:upgradebin/magento setup:di:compile

注意:如果您使用Redis进行缓存,则还应考虑清除Redis缓存。

答案 1 :(得分:0)

我也遇到过类似的问题,即无法为某些第三方模块实例化接口。
我在调试后发现app / etc / config.xml中缺少相应模块条目,但该模块的代码存在于代码库中的原因。
在app / etc / config.xml文件中手动添加模块的条目后,问题已解决。