我要将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文件。
答案 0 :(得分:1)
尝试清除缓存和生成目录。
var/generation
var/cache
bin/magento setup:upgrade
和bin/magento setup:di:compile
注意:如果您使用Redis进行缓存,则还应考虑清除Redis缓存。
答案 1 :(得分:0)
我也遇到过类似的问题,即无法为某些第三方模块实例化接口。
我在调试后发现app / etc / config.xml中缺少相应模块条目,但该模块的代码存在于代码库中的原因。
在app / etc / config.xml文件中手动添加模块的条目后,问题已解决。