【问题标题】:When trying to reindex catalog_product_flat I'm getting unknown error尝试重新索引 catalog_product_flat 时出现未知错误
【发布时间】:2013-02-14 18:04:16
【问题描述】:

我正在尝试重新索引 catalog_product_flat,但我收到了这个错误:

Product Flat Data index process unknown error:
exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs' in /path/to/magento/lib/Zend/Db/Statement/Pdo.php:228
Stack trace:
#0 /path/to/magento/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 /path/to/magento/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#2 /path/to/magento/lib/Zend/Db/Statement.php(320): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#3 /path/to/magento/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#4 /path/to/magento/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('ALTER TABLE `ma...', Array)
#5 /path/to/magento/lib/Varien/Db/Adapter/Pdo/Mysql.php(419): Zend_Db_Adapter_Pdo_Abstract->query('ALTER TABLE `ma...', Array)
#6 /path/to/magento/lib/Varien/Db/Adapter/Pdo/Mysql.php(340): Varien_Db_Adapter_Pdo_Mysql->query('ALTER TABLE `ma...')
#7 /path/to/magento/lib/Varien/Db/Adapter/Pdo/Mysql.php(839): Varien_Db_Adapter_Pdo_Mysql->raw_query('ALTER TABLE `ma...')
#8 /path/to/magento/app/code/core/Mage/Catalog/Model/Resource/Product/Flat/Indexer.php(799): Varien_Db_Adapter_Pdo_Mysql->addColumn('mage_catalog_pr...', 'email_template', Array)
#9 /path/to/magento/app/code/core/Mage/Catalog/Model/Resource/Product/Flat/Indexer.php(1390): Mage_Catalog_Model_Resource_Product_Flat_Indexer->prepareFlatTable(1)
#10 /path/to/magento/app/code/core/Mage/Catalog/Model/Product/Flat/Indexer.php(296): Mage_Catalog_Model_Resource_Product_Flat_Indexer->reindexAll()
#11 /path/to/magento/app/code/core/Mage/Catalog/Model/Product/Indexer/Flat.php(336): Mage_Catalog_Model_Product_Flat_Indexer->reindexAll()
#12 /path/to/magento/app/code/core/Mage/Index/Model/Process.php(209): Mage_Catalog_Model_Product_Indexer_Flat->reindexAll()
#13 /path/to/magento/app/code/core/Mage/Index/Model/Process.php(255): Mage_Index_Model_Process->reindexAll()
#14 /path/to/magento/shell/indexer.php(158): Mage_Index_Model_Process->reindexEverything()
#15 /path/to/magento/shell/indexer.php(198): Mage_Shell_Compiler->run()
#16 {main}

在 magento 企业 1.12 上对从 magento 1.3.4 社区获取的数据进行了重新索引。 从管理员或外壳索引器进行重新索引时会发生这种情况。

【问题讨论】:

    标签: magento


    【解决方案1】:

    好的,我找到了解决方案,我必须在方法 _getFlatColumnsOldDefinition 中的 /path/to/magento/app/code/core/Mage/Eav/Model/Entity/Attribute/Abstract.php 中更改此代码:

    case 'varchar':
        $columns[$this->getAttributeCode()] = array(
            'type' => 'varchar(255)'
    

    到这个:

    case 'varchar':
        $columns[$this->getAttributeCode()] = array(
            'type' => 'text'
    

    【讨论】:

    • 这是一个安全的改变吗?
    【解决方案2】:

    This answer 解决了属性计数的根本问题,无需借助架构或代码修改。

    【讨论】:

      【解决方案3】:

      magento 以编程方式重新索引

      身份证号

      1 个目录产品属性

      2 catalog_product_price

      3 目录网址

      4 catalog_product_flat

      5 catalog_category_flat

      6 catalog_category_product

      7 catalogsearch_stock

      8 cataloginventory_stock

      9 tag_summary

      完整的重新索引

      for ($i = 1; $i

      $process = Mage::getModel('index/process')->load($i);

      $process->reindexAll();

      } 个人重新索引

      $process = Mage::getModel('index/process')->load(4);

      $process->reindexAll();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-03
        • 2017-07-16
        相关资源
        最近更新 更多